2010-11-22 2 views
1

Я использую System.Linq.Dynamic library. Есть ли способ использования сущностей с отношениями один-два. Конкретно у меня есть 3 классаКак фильтровать список объектов A на основе первого элемента объекта

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;} 
} 

Я могу фильтровать когда отношения 12:59

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 на основе первого элемента объекта B, т. е. Bs [0]. было бы можно фильтровать с помощью Linq.Dynamic

ответ

1

DynamicQueryable.cs имеет интерфейс IEnumerableSignatures

Этот интерфейс имеет

void Any(bool predicate); 

с помощью этого метода мы можем Отфильтровать данные

var reuslt=list.Where("Bs.Any(Id [email protected])",value); 

это будет делать фильтрацию данных.

0

Я не проверял код, но если он работает для class2.Id, то должно работать для Id первого элемента в Bs: -

result=Select<A>("Bs[0].ElementAt(0)",1); 

Если Bs может быть пустым, то вы могли бы использовать

result=Select<A>("Bs[0].ElementAtOrDefault(0)",1); 
Смежные вопросы