我正在使用System.Linq.Dynamic库。有没有办法使用具有一对多关系的实体。具体来说,我有3个班级
class A
{
public int Id {get;set;}
...
...
public Class2 class2 {get;set;}
public ICollection<Another> Bs{get;set;}
}
class Class2
{
public int Id{get;set;}
}
class Another
{
public int Id {get;set;}
}
我可以在关系是一对一时过滤
public IQueryable<T> Select<T>(string condition,object value)
{
var list=FindAll<T>();//return list of T from database
var result=list.Where(string.Format("{0} = @0",condition),value);
}
result=Select<A>("class2.Id",1);
上面的调用给出了class2的id = 1的A对象列表。我如何搜索关系是一对多...我如何基于每个对象的第一项Bs即Bs [0]过滤A对象的列表。是否可以使用Linq.Dynamic进行过滤
答案 0 :(得分:1)
DynamicQueryable.cs
有
IEnumerableSignatures接口
此界面有
void Any(bool predicate);
使用这种方法我们可以过滤数据
var reuslt=list.Where("Bs.Any(Id =@0)",value);
这将对数据进行过滤。
答案 1 :(得分:0)
我尚未测试您的代码,但如果它适用于class2.Id
,则以下内容适用于Bs中第一项的Id
: -
result=Select<A>("Bs[0].ElementAt(0)",1);
如果Bs可能为空,那么你可以使用
result=Select<A>("Bs[0].ElementAtOrDefault(0)",1);