我有這行代碼翻番轉換:如何INT在LINQ聲明
IEnumerable<double> katlar = ilanlarQuery.ToList()
.Select(r => r.BulunduguKat.Value)
.OrderBy(f => f);
我得到的錯誤,因爲BulunduguKat.Value
是int,但是katlar
加倍。如何在本聲明中將BulunduguKat.Value
轉換爲雙倍數?謝謝。
我有這行代碼翻番轉換:如何INT在LINQ聲明
IEnumerable<double> katlar = ilanlarQuery.ToList()
.Select(r => r.BulunduguKat.Value)
.OrderBy(f => f);
我得到的錯誤,因爲BulunduguKat.Value
是int,但是katlar
加倍。如何在本聲明中將BulunduguKat.Value
轉換爲雙倍數?謝謝。
最直接的方法:只需轉換爲double
。這樣,你在告訴TResult
型這Select
操作的是一個double
- 使之成爲一個IEnumerable<double>
IEnumerable<double> katlar = ilanlarQuery.Select(r => (double)r.BulunduguKat.Value)
.OrderBy(f => f);
由於詮釋是隱式可轉換翻番,這將工作太:
IEnumerable<double> katlar = ilanlarQuery.Select<YourType,double>(i => i.BulunduguKat.Value)
.OrderBy(f => f)();
另外,如您所見,您可以在之前刪除.ToList()
如果確實BulunduguKat
是Nullable<int>
如蒂姆建議那麼你應該決定:
//If you don't want them in the result collection:
var katlar = ilanlarQuery.Where(r => r.BulunduguKat.HasValue)
.Select(r => (double)r.BulunduguKat.Value)
.OrderBy(f => f)
//If you want them with some default value:
var katlar = ilanlarQuery.Select(r => (double)(r.BulunduguKat.HasValue ? r.BulunduguKat.Value : 0))
.OrderBy(f => f);
第一個答案給出錯誤,第二個答案沒有'BulunduguKat.Value' – jason
@jason - 更正第二個。第一個錯誤是什麼? –
順便說一句,如果這個類型是'Nullable
...通過鑄造它? –
附註:刪除「ToList」,如果你不需要它,那麼創建一個新的List效率不高。如果你需要結果列表,最後使用'ToList'。如果'ilanlarQuery'是一個數據庫查詢,並且您希望使用'Linq-To-Objects'來代替使用'AsEnumerable'。 –
@jason鑄就足夠 – Sherlock