选择一列,按另一列排序

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.KursnamnString类型.

我怎样才能选择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,这不是受支持的操作.


Ree*_*sey 6

您可以将其重写为:

var query = from vk in db.Valdkurs 
            where vk.pnr == pnr 
            orderby vk.prioritet descending
            select vk.kursnamn;
Run Code Online (Sandbox Code Playgroud)