动态LINQ(对象):从对象名称列表(字符串)中替换查询中的对象名称?

时间:2011-08-16 14:46:02

标签: c# linq linq-to-objects

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

我需要通过对我拥有的字符串集合进行循环来替换AbcTransport。这些字符串实际上是对象名称(类)

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

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

我认为动态Linq可以实现这一点,但我不确定从哪里开始。

想象一下,我目前有大约26个像AbcTransport这样的对象,它们都被命名为不同但都继承自MyBase。我感兴趣的属性实际上是在MyBase上。如果我可以使用动态linq做一种循环,我不需要编写我的查询26次,并且还可以维护,因为当我添加更多对象时,我只需要将对象名称添加到我的集合中,就是这样。 / p>

1 个答案:

答案 0 :(得分: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);