Onl*_*ere 5 c# linq iqueryable entity-framework-4
下面是一些我想从高到低排序的值的例子。
8,929 viewers
18,213 viewers
2,223 viewers
41,231 viewers
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的查询示例:
streams = streamRepository.FindAll()
.OrderByDescending(s => s.ViewCount)
.Take(4);
Run Code Online (Sandbox Code Playgroud)
这不能正常工作,因为我认为它将参数作为字符串而不是 int 但这并不奇怪。
你如何建议我使用干净的 C#/Linq 代码创建这个“排序”?
理想情况下,使用上面的数据示例,结果有序集将是:
41,231 viewers
18,213 viewers
8,929 viewers
2,223 viewers
Run Code Online (Sandbox Code Playgroud)
类似的东西(更伪,没有测试任何东西,但应该接近)......
streams = streamRepository.FindAll()
.Select(s=> new { Original = s, Count = ParseToInt(s.ViewCount)})
.OrderByDescending(a => a.Count)
.Take(3);
Run Code Online (Sandbox Code Playgroud)
...哪里ParseToInt是该字符串的简单解析为仅计数(只需拆分“ ”并首先解析为 int 我猜)
希望这可以帮助一些人
编辑:这适用于无-Db 场景
如果是 Db 绑定查询 - 您需要使用一些映射的 SQL 函数(并且可以从 linq 映射到 SQL)将“字符串”解析为 int - 但我不确定什么是最好的这样做的方法。此外,您还需要进行选择,以便获取所有数据。
在这种情况下,通常在 Db 中保留一些 int 字段可能是最好的(而不是字符串)