我有一個方法是返回一個列表的List<KeyValuePair<int,string>>
;然而,我發現了一個錯誤:無法將源類型轉換爲目標類型List <KeyValuePair> Linq
Cannot convert source type
System.Collections.Generic.List<{Key:int, Value:string}>
to target typeSystem.Collections.Generic.KeyValuePair<'int,string'>>
.
我試圖做一個LINQ的select語句到一個新的列表,但我不明白,如果初始化列表是問題,或者它如何我越來越Linq語句中的值。
這裏是方法:
public static List<KeyValuePair<int,string>> GetStatus(int status)
{
List<KeyValuePair<int,string>> st = SelectList.GetStatuses();
List<KeyValuePair<int,string>> tp;
switch(status)
{
case (int)Status.Completed:
tp = st.Where(s => s.Key == (int)Status.Completed ||
s.Key == (int)Status.NotValid)
.Select(s => new { s.Key, s.Value }).ToList();
case (int)Status.Open:
tp = st.Where(s => s.Key == (int)Status.Open ||
s.Key == (int)Status.Reviewed)
.Select(s => new { s.Key, s.Value }).ToList();
default:
break;
}
return tp;
}
下面是填充列表的方法:
public static List<KeyValuePair<int, string>> GetStatuses()
{
using (var con = new SqlConnection())
{
var sql = @"SELECT ID [Key], Text [Value] from Statuses";
return (con.Query<KeyValuePair<int, string>>(sql.ToString(), commandType: commandType:Text) ?? Enumerable.Empty<KeyValuePair<int, string>>()).ToList();
}
}
他的返回類型是一個列表,所以ToList是必要的btw –
@JustinPihony謝謝,編輯。 –
我不知道我可以完全刪除選擇部分,但這當然確實使它有效且易於閱讀。謝謝Ben,Sergey,Justin! –