c# - List <对象>选择使用多个值

标签 c# linq listitem

我想使用select方法从列表中查找特定值。

我的代码:

public class Calc
{
    public int IdCalc { get; set; }
    public double Result { get; set; }
    public int Number { get; set; }
}

public class Program
{
    static void Main()
    {
        Calc myC1 = new Calc();
        List<Calc> liCalc = new List<Calc>();
        myC1.IdCalc = -1;
        myC1.Result = 20.2;
        myC1.Number = 1;

        Calc myC2 = new Calc();
        myC2.IdCalc = 22;
        myC2.Result = 20.2;
        myC2.Number = 2;
        liCalc.Add(myC1);
        liCalc.Add(myC2);

        double getResult = ((Calc)(liCalc.Select(Calc => Calc.IdCalc = 22 && Calc.Number = 2))).Result;

        Console.ReadKey();
    }
}


如您所见,我的列表包含两个对象:myC1myC2

我只想在IdCalc = 22和Number = 2时找到Result的值,这就是为什么我尝试使用Select的原因,但是它不适用于两个参数。

最佳答案

您可以使用Where,它使您可以根据某些条件过滤结果,但是将返回IEnumerable<Calc>。由于您仅查找单个结果,因此应使用First,它也带有谓词,并且仅返回第一个Calc

Calc myCalc = liCalc.First(c => c.IdCalc == 22 && c.Number == 2);
double result = myCalc.Result;


但是,如果没有与过滤器匹配的内容,则会引发异常。如果您对此感到担心,请使用FirstOrDefault,如果没有匹配项,它将返回null

关于c# - List <对象>选择使用多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085857/

相关文章:

c# - 如果派生类的 "reference"超出范围但基类引用保留,派生对象是否会发生变化?

linq - 使用 "Contains"时忽略 LINQ 中的尖音符号

html - 悬停时列表项背景颜色改变

android - ListView 高度仅对第一项返回零

css - 定位最后一个列表项

c# - 让 WinForms 使用 DPI 正确缩放的问题

c# - MVC 中的奇怪异常

c# - 如何将子 JSON 结构转换为 C# 对象图

c# - LINQ 性能影响

c# - 如何动态执行多个 Linq to Entities 排序