我需要为看起来像这样的 LINQ 查询构建一个 epression 树:
collection.OrderBy(e => ((MyObject)e["PropertyIndex"]).dictionary.Where(k => k.Key == "keyName").Select(k => k.Value).Single());
我查看了这个链接,它解释了如何链接 OrderBy 方法。我不知道如何使用表达式树在 OrderBy 中添加 Where。
更新:
我需要动态地对内存中的数据进行排序。所以 linq 查询可能看起来像这样:
collection.OrederBy(field1).ThenByDescending(field2).ThenBy(field3)
我只知道在运行时需要排序多少个字段。任何 fieldX 都可以是复杂对象。对象的类型当然会在运行时知道。其中一个对象具有您在上面的 LINQ 查询中看到的结构。它有一本字典,我必须对特定的键进行排序。在我的情况下,字典包含本地化数据,例如:
{{"en-US", "word (en)"}, {"es-ES", "word (es)"} , ....}
我需要按特定语言排序。