LINQ - 如何连接多个表并动态排序?
LINQ - How to join multiple tables and order by dynamically?
我肯定见过类似的问题,但出于某种原因,我无法使此查询正常工作。我正在使用 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 的示例都使用方法语法,但我不确定如何以这种方式完成编写我的内部联接。是否必须使用方法语法来完成?如果可以,您能否提供一个连接多个表的示例?
感谢任何帮助。
sortedResults.OrderBy("PatternName").ThenBy("Model");
错了!
sortedResults = sortedResults.OrderBy("PatternName").ThenBy("Model");
Linq 方法不修改查询,而是 return 一个不同于原始查询的新查询。
您不能通过使用 linq 语法来使用动态 linq。您必须使用函数式语法。
我肯定见过类似的问题,但出于某种原因,我无法使此查询正常工作。我正在使用 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 的示例都使用方法语法,但我不确定如何以这种方式完成编写我的内部联接。是否必须使用方法语法来完成?如果可以,您能否提供一个连接多个表的示例?
感谢任何帮助。
sortedResults.OrderBy("PatternName").ThenBy("Model");
错了!
sortedResults = sortedResults.OrderBy("PatternName").ThenBy("Model");
Linq 方法不修改查询,而是 return 一个不同于原始查询的新查询。
您不能通过使用 linq 语法来使用动态 linq。您必须使用函数式语法。