[英]Entity FrameWork, LINQ StartsWith() not working on Collection?
我在將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 =“對象引用未設置為對象的實例。”
我試圖找出在這種情況下這意味着什么,但是我似乎無法解決。 為什么會這樣呢?
問題是您的某些Staff_Name_First
屬性為空。 當您對實體執行p.Staff_Name_First.StartsWith
時,EF會忽略空引用,因為它們已轉換為SQL。
但是,當使用ObservableCollection<StaffData> MyCollection
將其轉換為內存中的集合時, p.Staff_Name_First.StartsWith
會引發異常。
查詢MyCollection
時檢查null:
var result = MyCollection.Where(p =>
p.Staff_Name_First != null &&
p.Staff_Name_First.StartsWith(myString) &&
p.Is_Alive);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.