【发布时间】:2013-11-19 16:19:50
【问题描述】:
有没有办法在之前定义的 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 不知道如何处理该方法。
相反,我认为我需要一个返回选择表达式的方法。它的参数将是第一个 Queryable,以及第二个 Queryable 的选择表达式。比如:
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)。
【问题讨论】:
-
您是说不想在 Select 语句中对字段名称进行硬编码?
-
我想要两个单独的查询。我想将这两个查询合二为一。我希望第一个 select 子句的内容与第二个 select 子句的内容并排放置。
标签: linq anonymous-types