2015-10-12 19 views
1

我想通過方法select從列表中找到特定值。列表<object>選擇使用多個值

我的代碼:

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

一旦你使用其中投可以取出來 –

+0

您好我試過在哪裏,但我有同樣的問題,我有錯誤不可能在Calc中輸入'WhereListIterator'。我試試這個:double getResult =((Calc)(liCalc.Where(Calc => Calc.IdCalc == 22 && Calc.Number == 2)))。 – Ironboy07

回答

5

您可以使用Where,它允許您根據某些條件過濾結果,但是這將返回IEnumerable<Calc>。既然你只是在尋找一個結果,你應該使用First這也需要一個謂語,只返回第一個Calc

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

這將拋出一個異常,如果沒有什麼過濾器相匹配,雖然。如果您擔心這一點,請使用FirstOrDefault,如果不匹配,將返回null

2

你可以使用下面的語句

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

基本上使用Where(),然後選擇()。

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(); 
    }