c# linq group by - 访问 select new 中的其他属性
c# linq group by - Access other properties inside select new
我正在将分组的 Type1 列表转换为另一个 Type2 列表,我想知道如何将 Type2 对象的 属性 定义为其他和刚刚定义的 Type2 属性的串联,在 select 分组项目中的新内容。
我的代码如下:
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>();
我无法访问 new 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>();
我正在将分组的 Type1 列表转换为另一个 Type2 列表,我想知道如何将 Type2 对象的 属性 定义为其他和刚刚定义的 Type2 属性的串联,在 select 分组项目中的新内容。
我的代码如下:
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>();
我无法访问 new 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>();