我有两个对象:包含B对象列表的A:

  • A有一个属性BList,列表A B反对该属性
  • B有一处房产A

我调用一个方法,它返回一个B元素的列表. 然后我想把这些B元素按它们的A对象分组,最后得到一个A属性的列表:

var groupedByA = bList.GroupBy(b => b.A).Select(a => a.Key).ToList()

这很好用,但在我的例子中,没有设置这些A对象的B列表,所以我还想将groupBy指令的B列表与A关联起来,如下所示

var groupedByA = bList.GroupBy(b => b.A).Select(a => a.Key then a.Key.BList = a.Val).ToList()

你知道我该怎么做吗?

推荐答案

您可以编写一条语句lambda:

.Select(group => {
  var bList = group.ToList();
  var a = group.Key;
  a.BList = bList;
  return a;
})

您可能需要添加一些注释或以其他方式注意对象将被修改.通常你会期望LINQ语句是没有副作用的.

Csharp相关问答推荐

如何从顶部提取发票号作为单词发票后的第一个匹配

使用C#中的Shape API从Azure目录获取所有用户

Serilog SQL服务器接收器使用UTC作为时间戳

在命令行中使用时安装,但在单击时不会安装

在依赖性注入和继承之间进行 Select

有没有办法把+02:00转换成TimeSpan?""

为什么我的ASP.NET核心MVC应用程序要为HTML元素添加一些标识符?

为什么总输出就像12.3没有一分一样?

ITypeLib2.GetLibStatistics()在C#中总是抛出AccessViolationException

Select Many和默认IfEmpty内部Select Many错误工作

只有第一个LINQ.Count()语句有效

JsonSerializer.Deserialize<;TValue>;(String,JsonSerializerOptions)何时返回空?

异步任务导致内存泄漏

Savagger使用Fastendpoint更改用户界面参数

如何将FindAll()与Nuget包Interop.UIAutomationClient一起使用

基于C#和ANGING的SignalR实时聊天流媒体应用

.NET 6:如何防止系统生成的日志(log)?

将FileStream的特定部分作为字节数组读取

忽略Visual Studio代码中的StyleCop规则

如何对正方形格线进行对角分组