我想通过方法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();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我的List包含两个对象:myC1和myC2.
我只是想在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;
Run Code Online (Sandbox Code Playgroud)
但是,如果没有与过滤器匹配的内容,则会抛出异常.如果您对此感到担心,如果没有匹配则使用FirstOrDefault哪个会返回null.