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

问题描述 投票:2回答:1

我有一个很好的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次,并且还可以维护,因为当我添加更多对象时,我只需要将对象名称添加到我的集合中,就是这样。

c# linq linq-to-objects
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.