Linq动态顺序不工作

本文关键字:工作 顺序 动态 Linq | 更新日期: 2023-09-27 18:12:07

我不知道如何创建一个动态Linq查询。

正在运行:

var query = from article in context.DP_ARTICLES
            orderby article.ART_NUM descending
            select new ArticleItem() { Article = article };

但是这行不通:

var query = from article in context.DP_ARTICLES
            orderby("ART_NUM DESC")
            select new ArticleItem() { Article = article };
编辑:

的目标是订购一个listview列,所以在我的方法我得到sql列名作为字符串参数(如ART_NUM)。所以最好是在我的查询中直接使用它,而不是进行切换…

Linq动态顺序不工作

动态方法只在使用调用的方法语法时起作用,在使用查询语法时不起作用。

var query = context.DP_ARTICLES
    .OrderBy("ART_NUM DESC")
    .Select(a => new ArticleItem { Article = a });

如果您的查询基于谓词,那么您可以执行以下操作:

var query = context.DP_ARTICLES; 
if(predicate) 
   query=  query.OrderBy(article => article.ART_NUM).AsQueryable();
else if(predicate2) 
   query = //Second Order by clause
.... //More sort options
else 
   //Default action if needed
var results = query.select(article => new ArticleItem
                                      { 
                                          Article = article
                                      }).ToList(); 

你需要改变

orderby("ART_NUM DESC")

orderby article.ART_NUM descending

as order不接受字符串字面值