Linq动态命令不工作

时间:2016-10-07 14:13:21

标签: c# linq

我不知道如何制作动态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)。所以最好是直接在我的查询中使用它而不是进行切换......

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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(); 

答案 2 :(得分:0)

您需要更改

orderby("ART_NUM DESC")

orderby article.ART_NUM descending

因为orderby不接受字符串文字。