LINQ C#如何将属性设置为其他两个的和

时间:2019-01-14 15:45:13

标签: c# linq

让我们说我有一个对象清单Cat {名称,年龄,大小,体重等}。现在,让我们想象一下“猫名单”。我想做的是创建一个新的CatDataView列表:

cats.Select(cat => new CatDataView{
    Name = cat.Name,
    Age = cat.Age,
    Size = cat.Size,
    Weight = Age + Size})

是否可以通过某种方式实现体重=年龄+身材?这是一个更复杂的问题,其中Age和Size是复杂的LINQ查询。

2 个答案:

答案 0 :(得分:5)

由于您的“复杂LINQ查询”已经获取了要添加到模型对象中的值,因此您可以让Weight属性getter计算该值,而不用执行另一个查询:

public class CatDataView
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Size { get; set; }
    public int Weight => Age + Size;
}

示例属性正在使用表达式主体introduced in C# 6

答案 1 :(得分:1)

哪个部分很复杂?像这样使用它:

var result = cats.Select(cat => new CatDataView{
    Name = cat.Name,
    Age = cat.Age,
    Size = cat.Size,
    Weight = cat.Age + cat.Size}).ToList()