gpt4 book ai didi

c# - 在计算字段中使用先验属性的 Linq 选择查询

转载 作者:行者123 更新时间:2023-11-30 20:31:41 27 4
gpt4 key购买 nike

我有几个属性是在查询的选择部分的 LINQ 查询中计算出来的。我需要使用这些属性的结果在单独的属性中执行另一个计算。

目前我是怎么做的

var query = data
.Select(model => new
{
SomeProperty1 = model.Sum(x => x.Foo),
SomeProperty2 = model.Sum(x => x.Bar),
SomeProperty3 = model.Sum(x => x.Bar) == 0 ? 0 :
model.Sum(x => x.Foo) / model.Sum(x => x.Bar)
};

想知道是否有什么方法可以做到这一点

var query = data
.Select(model => new
{
SomeProperty1 = model.Sum(x => x.Foo),
SomeProperty2 = model.Sum(x => x.Bar),
SomeProperty3 = this.SomeProperty2 == 0 ? 0 :
this.SomeProperty1 / this.SomeProperty2
};

为简洁起见,示例大大缩短了。在我的实际查询中,计算要冗长得多。

我相信这可以在模型属性的 get 部分完成,但我只是想知道是否可以像上面的 linq 查询那样完成。

提前致谢!

最佳答案

不能在对象初始值设定项(C# 规范 7.6.10.2)中引用新创建的对象,但可以在 LINQ 查询中引入新的查询变量:

var query = from model in data
let SomeProperty1 = model.Sum(x => x.Foo)
let SomeProperty2 = model.Sum(x => x.Bar)
select new {
SomeProperty1,
SomeProperty2,
SomeProperty3 = SomeProperty2 == 0 ? 0 : SomeProperty1 / SomeProperty2
};

另请记住,当被除数和除数都是整数时使用整数除法。

关于c# - 在计算字段中使用先验属性的 Linq 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42796616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com