Linq 请求中的Where 语句
我尝试执行此 Linq 请求:
var lqClassResult = from classItem in this.dataSet._class.AsEnumerable()
join namespaceItem in this.dataSet._namespace.AsEnumerable()
on classItem.Field<int>("namespace_id") equals namespaceItem.Field<int>("id")
where classItem.Field<string>("class_name").ToLowerInvariant().Contains(className.ToLowerInvariant()) &&
namespaceItem.Field<string("namespace_name").ToLowerInvariant().Contains(namespaceName.ToLowerInvariant())
orderby namespaceItem.Field<string>("namespace_name"),classItem.Field<string>("class_name")
select new {
class_name = classItem.Field<string>("class_name"),
namespace_name = namespaceItem.Field<string>("namespace_name")
};
但是当我执行它时,Visual Studio 由于这一行而抛出 NullReferenceException: <代码> namespaceItem.Field("namespace_name").ToLowerInvariant().Contains(namespaceName.ToLowerInvariant())
在 where 子句中。
如果有人能帮助我那就太好了
I try to execute this Linq request :
var lqClassResult = from classItem in this.dataSet._class.AsEnumerable()
join namespaceItem in this.dataSet._namespace.AsEnumerable()
on classItem.Field<int>("namespace_id") equals namespaceItem.Field<int>("id")
where classItem.Field<string>("class_name").ToLowerInvariant().Contains(className.ToLowerInvariant()) &&
namespaceItem.Field<string("namespace_name").ToLowerInvariant().Contains(namespaceName.ToLowerInvariant())
orderby namespaceItem.Field<string>("namespace_name"),classItem.Field<string>("class_name")
select new {
class_name = classItem.Field<string>("class_name"),
namespace_name = namespaceItem.Field<string>("namespace_name")
};
But when i execute it, Visual Studio Throw a NullReferenceException because of this line :
in where clause.
namespaceItem.Field("namespace_name").ToLowerInvariant().Contains(namespaceName.ToLowerInvariant())
If anyone can help me it would be great
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
Try
我猜想
namespaceItem.Field("namespace_name")
返回 null。这是该方法的有效返回值吗?如果没有,请检查您的底层代码。
如果这是一个有效的返回值,那么您需要在调用 ToLowerInvariant() 之前检查是否为 null:
请注意额外的 null 检查:
但是,这只是一个猜测:您需要确定 null 值在哪里是来自。
I would guess that
namespaceItem.Field("namespace_name")
is returning null.Is this a valid return value for that method? If not, then check your underlying code.
If this is a valid return value then you need to check for a null before calling ToLowerInvariant():
Note the extra null check:
However, this is only a guess: you need to determine where the null value is coming from.
2种可能性:
返回 null,因为没有字段 -
Field("namespace_name").ToLowerInvariant()。
返回 null,因为 namespace_name 中的 VALUE 为 null,因此 ToLowerInvariant 也会返回 null,这会破坏包含。
2 possibilities:
returns null because there is no field-
Field("namespace_name").ToLowerInvariant().
returns null because the VALUE in namespace_name is a null so ToLowerInvariant also returns null, which will blow the contains.