Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表<;对象>;选择“使用多个值”_C#_Linq_Listitem - Fatal编程技术网

C# 列表<;对象>;选择“使用多个值”

C# 列表<;对象>;选择“使用多个值”,c#,linq,listitem,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();

我想使用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();
    }
}
公共类计算
{
public int IdCalc{get;set;}
公共双结果{get;set;}
公共整数{get;set;}
}
公共课程
{
静态void Main()
{
Calc myC1=新的Calc();
List liCalc=新列表();
myC1.IdCalc=-1;
myC1。结果=20.2;
myC1.编号=1;
Calc myC2=新的Calc();
myC2.IdCalc=22;
myC2.结果=20.2;
myC2.编号=2;
liCalc.Add(myC1);
liCalc.Add(myC2);
double-getResult=((计算)(liCalc.Select(计算=>Calc.IdCalc=22&&Calc.Number=2))).Result;
Console.ReadKey();
}
}
如您所见,我的列表包含两个对象:
myC1
myC2


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

您可以使用以下语句

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

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

您可以使用以下语句

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

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

您可以使用
Where
,它允许您根据某些条件筛选结果,但将返回
IEnumerable
。由于您只查找一个结果,因此应使用
First
,它还接受谓词并仅返回第一个
Calc

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

但是,如果没有与筛选器匹配的内容,则会引发异常。如果您担心这一点,请使用
FirstOrDefault
,如果不存在匹配项,它将返回
null

您可以使用
Where
,它允许您根据某些条件筛选结果,但它将返回
IEnumerable
。由于您只查找一个结果,因此应使用
First
,它还接受谓词并仅返回第一个
Calc

Calc myCalc = liCalc.First(c => c.IdCalc == 22 && c.Number == 2);
double result = myCalc.Result;
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();
    }
但是,如果没有与筛选器匹配的内容,则会引发异常。如果您担心这一点,请使用
FirstOrDefault
,如果没有匹配项,它将返回
null

公共类计算
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();
    }
{ public int IdCalc{get;set;} 公共双结果{get;set;} 公共整数{get;set;} } 公共课程 { 静态void Main() { Calc myC1=新的Calc(); List liCalc=新列表(); myC1.IdCalc=-1; myC1。结果=20.2; myC1.编号=1; Calc myC2=新的Calc(); myC2.IdCalc=22; myC2.结果=20.2; myC2.编号=2; liCalc.Add(myC1); liCalc.Add(myC2); double getResult=liCalc.First(item=>item.IdCalc==22&&item.Number==2)。Result;//请注意,如果列表中没有满足条件的项,则会引发异常。 Console.ReadKey(); }
公共类计算
{
public int IdCalc{get;set;}
公共双结果{get;set;}
公共整数{get;set;}
}
公共课程
{
静态void Main()
{
Calc myC1=新的Calc();
List liCalc=新列表();
myC1.IdCalc=-1;
myC1。结果=20.2;
myC1.编号=1;
Calc myC2=新的Calc();
myC2.IdCalc=22;
myC2.结果=20.2;
myC2.编号=2;
liCalc.Add(myC1);
liCalc.Add(myC2);
double getResult=liCalc.First(item=>item.IdCalc==22&&item.Number==2)。Result;//请注意,如果列表中没有满足条件的项,则会引发异常。
Console.ReadKey();
}

use where而不是select,其==single=用于赋值一旦使用where可以进行强制转换,我尝试了where,但遇到了相同的问题,我遇到了一个错误,无法在类型Calc中强制转换WhereListIterator。我尝试了以下方法:double getResult=((Calc)(liCalc.where(Calc=>Calc.IdCalc==22&&Calc.Number==2))).Result;使用where而不是select,其==single=用于赋值一旦使用where可以进行强制转换,我尝试了where,但我有相同的问题,我有一个错误,无法在类型Calc中强制转换WhereListIterator。我尝试了以下操作:double-getResult=((Calc)(liCalc.where(Calc=>Calc.IdCalc==22&&Calc.Number==2))。结果;