让我开始提问,告诉我,我已经进行了大量搜索以找到解决方案,事实上,我已经设法完成了最后一步,但是现在我完全坚持了。
基本上,我确实希望基于某些属性(除非在运行时中才知道)和一些其他操作(例如GroupBy
,Sum
,..)执行Average
。 。在其他属性中(除非在运行时中,否则我也不知道)。
因此,以错误的方式编写,我想执行以下操作:
var data = ...;
var propertyToGroup = new List<string>() { "prop1", "prop2" };
var propertyToOperate = new List<string>() { "prop3Count" };
var group = propertyToGroup.GroupBy(p => new { p[propertyToGroup[0]], p[propertyToGroup[1]], ... });
var select = group.Select(g => new {
prop1 = g.Key.prop1,
prop2 = g.Key.prop2,
prop3Count= g.Select(s => s.prop3Count).Count())
});
因此,最后,我将在prop1
和prop2
上分组,并且prop3Count
将具有相同的prop1
和{{ 1}}。
现在,我到目前为止已经完成了什么?我已经成功创建了用于创建prop2
变量的函数!我还设法创建了group
所在的其他memberAssignment
,但是我完全想念如何通过创建的prop1 = g.Key.prop1
执行Select
。
为了更好地理解,我创建了这个示例-> https://dotnetfiddle.net/RjY4BO
因此,如您所见,在memberAssignment
中,我设法创建了CreateObject
memberAssignment
和Brand = o.Key.Car.Brand
。仅错过执行计数的开关,但这不是问题。
问题是我不知道如何使用Model = o.Key.Car.Model
返回那些memberAssignment
。
现在,new {...}
返回对象,但是我想做的事情是这样的:
CreateObject
这样我就可以得到回报:
return = new { foreach(a in bindings) }
我正确解释了自己吗?希望如此。并希望您能为我提供帮助:正如我所说,我在SO上还有很多其他问题,因此,我创建了GroupBy(Grouping by multiple keys known at runtime), new { Brand = o.Key.Car.Brand, Model = o.Key.Car.Model }
函数(LINQ : Dynamic select),但现在我迷失了:(
编辑:在该示例中,我使用两个列表来了解CreateObject
和propertyToGroup
:这只是一种简化;在实际的应用程序中,我将从我的rawData中检索这些列表,同样,我也不知道前面的那些属性。