我遇到LINQ问题,StartWith()
应用于集合。
这是DataBase
上查询的简化版本,返回正确的记录:
using (Entities entities = new Entities())
{
var result = entities.StaffData.Where(p =>
p.Staff_Name_First.StartsWith(myString)
p.Is_Alive == true);
}
如上所述,这将返回正确的记录,
但是,当放置在包含标准Is_Alive == true
的所有记录的集合上时。该系列约有500条记录。
public static ObservableCollection<StaffData> MyCollection = new ObservableCollection<StaffData>();
var result = MyCollection.Where(p =>
p.Staff_Name_First.StartsWith(myString)
p.Is_Alive == true);
因此,当将查询应用于集合时,我会在结果中收到消息:
Message =“对象引用未设置为对象的实例。”
我试图在这种情况下找出这意味着什么,但我似乎无法解决这个问题。为什么会发生这种情况?
答案 0 :(得分:4)
问题是您的某些callIdField
属性为空。当您对实体执行Staff_Name_First
时,EF会忽略空引用,因为它们已转换为SQL。
但是当您使用p.Staff_Name_First.StartsWith
将其转换为内存中集合时,ObservableCollection<StaffData> MyCollection
会抛出异常。
查询p.Staff_Name_First.StartsWith
时检查空值:
MyCollection