我确实看到了类似的问题,但出于某种原因,我无法让此查询正常工作。我使用System.Linq.Dynamic.Core
并尝试根据用户输入动态排序结果。 " PatternName,Model"示例中的字符串通常是变量。这是我尝试过的。
IQueryable sortedResults = from reqs in dataContext.Requirements
join pats in dataContext.Patterns on reqs.PatternRequirement equals pats.Id
join sups in dataContext.Suppliers on reqs.SupplierRequirement equals sups.Id
orderby ("PatternName, Model")
select new
{
reqs.Id,
sups.SupplierName,
pats.PatternName,
reqs.Model,
reqs.YardageRequirements,
reqs.Repeat,
reqs.ModelDescription,
reqs.CreateUser,
reqs.CreateTimeStamp,
reqs.UpdateUser,
reqs.UpdateTimeStamp
};
return sortedResults;
这编译并运行没有错误,但我的结果集仍未按照我需要的方式排序。我也试过了:
IQueryable sortedResults = from reqs in dataContext.Requirements
join pats in dataContext.Patterns on reqs.PatternRequirement equals pats.Id
join sups in dataContext.Suppliers on reqs.SupplierRequirement equals sups.Id
select new
{
reqs.Id,
sups.SupplierName,
pats.PatternName,
reqs.Model,
reqs.YardageRequirements,
reqs.Repeat,
reqs.ModelDescription,
reqs.CreateUser,
reqs.CreateTimeStamp,
reqs.UpdateUser,
reqs.UpdateTimeStamp
};
sortedResults.OrderBy("PatternName").ThenBy("Model");
return sortedResults;
这也运行没有错误,但产生相同的结果。我见过的大多数示例使用Dynamic Linq使用方法语法,但我不确定如何以这种方式完成编写内部联接。是否必须使用方法语法完成?如果确实如此,您能提供加入多个表的示例吗?
感谢任何帮助。
答案 0 :(得分:1)
sortedResults.OrderBy("PatternName").ThenBy("Model");
错了!
sortedResults = sortedResults.OrderBy("PatternName").ThenBy("Model");
Linq方法不会修改查询,而是返回与原始查询不同的新查询。
您不能通过使用linq语法来使用动态linq。您必须使用函数语法。