List <object>选择使用多个值

时间:2015-10-12 16:25:33

标签: c# linq listitem

我想通过方法select来找到List中的特定值。

我的代码:

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但它没有使用两个参数。

3 个答案:

答案 0 :(得分:5)

您可以使用Where,这可以让您根据某些条件过滤结果,但这会返回IEnumerable<Calc>。由于您只需查找单个结果,因此您应该使用First,它也会使用谓词并仅返回第一个Calc

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

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

答案 1 :(得分:4)

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 = liCalc.First(item => item.IdCalc == 22 && item.Number == 2).Result; //Note that this will throw an exception if no item in the list satisfies the condition.

        Console.ReadKey();
    }

答案 2 :(得分:2)

您可以使用以下声明

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

基本上使用Where()后跟Select()。