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