我有这行代码翻番转换:如何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