我有一个名称,日期,类别为参数的集合。我想根据动态更改的三个输入顺序对列表进行排序。 例如:在一种情况下,我必须分别对订单日期,名称,类别进行排序。 在另一种情况下,订单是名称,日期和类别。所以我可以拥有所有的排列和组合。有人可以用一种通用的方式来帮助我实现它。LINQ动态查询查询 - 多个字段
回答
我也在这里找到他可能喜欢的东西:http://www.codeproject.com/Articles/27834/Generic-List-Sort-Function < - 希望它有帮助,它可以根据任何输入属性进行排序。该物业是通过反思。
该方法在List中实现,而不是在IQueryable中实现。所以只能在.ToList()之后使用,换句话说,在数据加载之后才能使用。 –
LINQ已经允许您通过排序依据后加入Queryable.ThenBy,QueryableThenByDescending,Enumerable.ThenBy或Enumerable.ThenByDescending功能使用多个字段进行排序。
检查Multiple “order by” in LINQ对于类似的问题和讨论。如果您需要Enumerable未提供的罕见方法,则可以将Enumerable转换为Queryable,只需在其上调用AsQueryable即可。
我知道LinQ有orderby和thenby函数。但是这里的问题是因为场的顺序是动态的,我如何通过场并相应地安排它们? – user1687824
您不需要*传递*任何东西,只需使用适当的lambda调用ThenBy,具体取决于您要订购的字段。即使是一个简单的switch语句也可以。或者,您可以使用要订购的lambda表创建数组/列表,然后逐个应用它们。拉姆达只不过是另一种类型的变量 –
我不确定你是否理解了我,或者我没有明白它......你可以给我一些示例代码吗?根据你的解决方案,我需要给予orderby。其余的呢?那么如何动态地实现呢? – user1687824
下面是一个例子
// Just to get IOrderedEnumerable from the collection
// And set the default order
var orderedItems = context.Items.OrderBy(i => i.Name);
var orderByString = txtOrderBy.Text.ToLower();
switch(orderByString)
{
case "category":
orderedItems = orderedItems.OrderBy(i => i.Category);
break;
case "date":
orderedItems = orderedItems.OrderBy(i => i.Date);
break;
default:
break;
}
[在LINQ多个 “以便通过”]的
这不是按一组字段排序,而是按最后一个OrderBy字段计数。 –
- 1. LINQ查询字段<T>动态?
- 2. 动态LINQ查询
- 3. 动态LINQ查询
- 4. 多态LINQ查询
- 5. 动态查询使用Linq To SQL根据多个字段
- 6. 动态LINQ查询
- 7. Linq查询动态
- 8. 动态LINQ查询
- 9. 动态LINQ查询
- 10. LINQ动态查询
- 11. 动态linq查询
- 12. 动态LINQ查询EF C#
- 13. 动态LINQ查询ExpandoObject?
- 14. Linq动态查询与组
- 15. 复杂动态LINQ查询
- 16. LINQ中的动态查询
- 17. 多个Linq查询||
- 18. Linq 2 Sql动态查询
- 19. 构建LINQ查询动态
- 20. LINQ动态查询库
- 21. 动态Linq查询帮助?
- 22. 动态创建linq查询
- 23. 创建动态LINQ查询
- 24. 在SharePoint动态LINQ查询
- 25. 查询使用动态LINQ
- 26. 动态Linq查询问题
- 27. 动态查询动态子查询
- 28. 查询字段与多行SQL查询
- 29. Linq查询阶段
- 30. 建立一个动态的LINQ查询
可能重复(http://stackoverflow.com/questions/298725/multiple-order-by-in-linq) –
http://stackoverflow.com/questions/41244/dynamic-linq-orderby-on-ienumerablet – JohnLBevan
LINQ使用ThenBy函数提供了这种开箱即用的功能,不需要使用动态Linq或任何东西 –