Dan*_*l B 14 c# linq sql-order-by linq-to-sql
我正在使用LINQ to SQL从数据库中进行选择.我想选择一个由值组成的列String,但是由另一个包含"优先级"值的列排序int.
这就是我的LINQ语句现在的样子:
var query = from vk in db.Valdkurs
where vk.pnr == pnr
select vk.kursnamn.OrderByDescending(x => vk.prioritet);
Run Code Online (Sandbox Code Playgroud)
在第三行代码NotSupportedException中抛出异常消息
类型'System.String'不支持序列运算符
我得出结论,这可能是因为
vk.kursnamn.OrderByDescending(x => vk.prioritet);
Run Code Online (Sandbox Code Playgroud)
哪里vk.Kursnamn是String类型.
我怎样才能选择vk.Kursnamn并按顺序排序vk.Priority?
das*_*ght 18
您需要先订购,然后选择,如下所示:
var query = db.Valdkurs
.Where(vk=> vk.pnr == pnr) // Filter
.OrderBy(vk => vk.prioritet) // prioritet is still here - order by it
.Select(vk => vk.kursnamn); // Now grab the kursnamn
Run Code Online (Sandbox Code Playgroud)
否则,LINQ认为您正在尝试对该字符进行排序string,这不是受支持的操作.
您可以将其重写为:
var query = from vk in db.Valdkurs
where vk.pnr == pnr
orderby vk.prioritet descending
select vk.kursnamn;
Run Code Online (Sandbox Code Playgroud)