您好我使用Linq和EF 4。
我有这个查询,但似乎无法通过字符串变量sortExpression
对结果进行排序。
我想我在"it."
部分做错了。
注意:sortExpression
可能有Title
请你看看我的语法有什么问题?谢谢你的帮助
var myContentsForAuthor = from c in context.CmsContents
join a in context.CmsAuthors on c.AuthorId equals a.AuthorId
join u in context.aspnet_Users on a.UserId equals u.UserId
orderby("it." + sortExpression)
where u.UserId == myUserGuid && c.IsDeleted == false && c.Title.Contains(nameSearchString)
select c;
return myContentsForAuthor.ToList();
答案 0 :(得分:1)
你可以像下面那样实现你想要的东西:
var myContentsForAuthor = from c in context.CmsContents
join a in context.CmsAuthors on c.AuthorId equals a.AuthorId
join u in context.aspnet_Users on a.UserId equals u.UserId
where u.UserId == myUserGuid && c.IsDeleted == false && c.Title.Contains(nameSearchString)
select c;
if(sortExpression == 'Title')
{
return myContentsForAuthor.Where(c => c.Title).ToList();
}
if(sortExpression == 'Author')
{
return myContentsForAuthor.Where(c => c.Author.Name).ToList();
}
注意:始终将orderby
放在查询的末尾。
编辑:我更新了代码 EDIT2:将其更新为更简单
答案 1 :(得分:0)
orderby
需要指定成员。在您的情况下 - orderby c(?).Titile
而非ordeby(string)
。您似乎必须使用表达式树(动态LINQ)来创建所需的查询。
答案 2 :(得分:0)
您需要构建动态linq查询。请参阅此问题的答案How can I do an OrderBy with a dynamic string parameter?。