我們正在使用Dynamic Linq庫構建動態搜索表達式。我們遇到了一個問題,那就是如何使用動態linq庫構造具有一對多關係的導航屬性的lamba表達式。導航屬性上的動態Linq搜索表達式
我們有我們使用下面用含有陳述書
Person.Names.Select(FamilyName).FirstOrDefault()
它的工作原理,但這裏有兩個問題。
它當然只選擇FirstOrDefault()名稱。我們希望它爲每個人使用所有名稱。
如果某人沒有名字,則Select會拋出異常。
這對定期查詢並不困難,因爲我們可以從語句中執行兩個操作,但lambda表達式更具挑戰性。
任何建議,將不勝感激。
EDIT- 附加代碼信息...非動態linq表達式看起來像這樣。
var results = persons.Where(p => p.Names.Select(n => n.FamilyName).FirstOrDefault().Contains("Smith")).ToList();
和類看起來像以下各項
public class Person
{
public bool IsActive { get; set;}
public virtual ICollection<Name> Names {get; set;}
}
public class Name
{
public string GivenName { get; set; }
public string FamilyName { get; set; }
public virtual Person Person { get; set;}
}
你可以發表由'FamilyName'表示的代碼嗎? – 2011-03-03 06:10:03