我们正在使用 Dynamic Linq 库构建动态搜索表达式。我们遇到了一个问题,即如何使用动态 linq 库为具有一对多关系的导航属性构建一个 Lamba 表达式。
我们将以下内容与 contains 语句一起使用 -
Person.Names.Select(FamilyName).FirstOrDefault()
它有效,但有两个问题。
它当然只选择 FirstOrDefault() 名称。我们希望它使用每个人的所有名字。
如果没有人的姓名,则 Select 会引发异常。
使用常规查询并不难,因为我们可以执行两个 from 语句,但 lambda 表达式更具挑战性。
任何建议将不胜感激。
编辑-附加代码信息...非动态 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;}
}