2011-08-16 97 views
2

任何建议真的有帮助。动态LINQ(到对象):从对象名称列表(字符串)中替换查询中的对象名称?

我有一个很好的LINQ查询,它运行良好,它返回一个结果集,每个结果集都继承自MyBase。

我需要通过做一种循环来取代AbcTransport来收集我所拥有的字符串。这些字符串实际上是对象名称(类)

MyBase testItem = from x in AbcTransport 
        from y in x.SolidItems 
        where y.Classified == otherObject.Classified 
        select x; 

这将减少我需要写的代码量。

我认为这是可能的动态LINQ的,但我不能确定从哪里开始。

可以想象我有一个像AbcTransport目前约26的对象都被命名不同,但都是从MyBase继承..我感兴趣的属性实际上是MyBase。如果我能使用动态LINQ做一种循环的,我也不会写我查询26次,并且还将使维护,当我加入mmore对象我只需要对象名称添加到我的收藏和多数民众赞成它..

非常感谢任何帮助

在此先感谢。

回答

3

为什么不把该查询的通用方法里面?

MyBase Get<T>(IEnumerable<T> list) where T : MyBase 
{ 
    MyBase testItem = from x in list 
         from y in x.SolidItems 
         where y.Classified == otherObject.Classified 
         select x; 
    return testItem; 
} 

你可以这样调用它:

var result1 = Get(AbcTransport); 
var result2 = Get(DefTransport);