c# linq group by - 访问 select new 内的其他属性

标签 c# linq group-by

我正在另一个 Type2 列表中转换分组的 Type1 列表,我想知道如何将 Type2 对象的属性定义为其他和刚刚定义的 Type2 属性的串联,在分组项中选择新的。

我的代码如下:

List<Type1> list1 = GetList1();

List<Type2> list2 = (from r in list1
                    group r by new
                    {
                         r.Prop1,
                         r.Prop2,
                         r.Prop3
                    }
                    into groupedRequest
                     select new Type2()
                     {
                         Prop1 = groupedRequest.Key.Prop1,
                         Prop2 = GetProp2FromComplexOperation(groupedRequest.Key.Prop1),
                         Prop3 = Prop1 + Prop2 //<---- The name Prop1 does not exists in the current context
                     }).ToList<Type2>();

我无法在新的 Type2() 创建中访问 Prop1 和 Prop2。 有可能以任何方式做到这一点吗?

我知道可以计算

Prop3 = groupedRequest.Key.Prop1 + GetProp2FromComplexOperation(groupedRequest.Key.Prop1);

但我想避免再次调用 GetProp2FromComplexOperation。

提前致谢!

最佳答案

您可以像这样使用let:

List<Type2> list2 = (from r in list1
                    group r by new
                    {
                         r.Prop1,
                         r.Prop2,
                         r.Prop3
                    }
                    into groupedRequest
                    let p1 = groupedRequest.Key.Prop1
                    let p2 = GetProp2FromComplexOperation(groupedRequest.Key.Prop1)
                     select new Type2()
                     {
                         Prop1 = p1,
                         Prop2 = p2,
                         Prop3 = p1 + p2
                     }).ToList<Type2>();

关于c# linq group by - 访问 select new 内的其他属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149666/

相关文章:

c# - 如何为此数据结构编写 linq 查询

sql - 仅使用一个标志对后续行进行分组

MySQL从匹配数组的表中获取所有相关ID

c# - 如何在 Visual Studio 2019 中向我的 C# 程序添加 list 文件?

c# - 如何在 CSS 中传递参数,然后如何在 ASP.NET 中对该参数应用 if..else?

c# - C# sqlite 中的多线程

c# - Guid.NewGuid() 在 LINQ to Entities 中做什么?

.net - 自创建数据库以来,支持 'ApplicationDbContext' 上下文的模型已更改

MySQL Group by 查询特定条件

c# - TreeNode.EndEdit 与 NodeLabelEditEventArgs.CancelEdit