可组合LINQ选择子句

时间:2013-11-19 16:19:50

标签: linq anonymous-types

有没有办法构建以前定义的LINQ查询的select子句?

例如:

var stuffQuery =
    from stuff in MyStuff
    select new {
        stuff.Name
    };
var query2 =
    from stuff in stuffQuery
    join otherStuff in YourStuff on stuff.Name equals otherStuff.Name
    select new {
        stuff.*, // how can I accomplish this?
        YourStuff = new {
            otherStuff.PropertyX
        }
    };

我想要的结果是一个像这样的对象:

string Name
anonymous YourStuff
        string PropertyX

我考虑过使用“Combine”方法,这种方法可以将我的两个匿名对象组合成动态。但Linq-to-Sql不知道如何处理该方法。

相反,我认为我需要一个返回select表达式的方法。它的参数将是第一个Queryable,以及第二个Queryable的select表达式。类似的东西:

var query2 =
    from stuff in stuffQuery
    join otherStuff in YourStuff on stuff.Name equals otherStuff.Name
    GetCombinedSelectClause(stuffQuery, new {
        YourStuff = new {
            otherStuff.PropertyX
        }
    });

我怎样才能做到这一点?我没有嫁给任何特定的语法风格。但是,我不想使用基于字符串的解决方案(例如System.Linq.Dynamic)。

2 个答案:

答案 0 :(得分:0)

ExpandoObject怎么样?我相信它可以完全满足您的需求。

答案 1 :(得分:0)

我的问题可能不是最好的措辞。但是,我不认为LINQ查询旨在实现我追求的目标。

我正在结束这个问题,因为我根本不认为答案是可以实现的。