Linq按布尔sorting
我有一个linq查询,我想通过f.bar命令,这是一个string,但我也想命令它的f.foo,这是一个布尔字段,第一。 像下面的查询一样。
(from f in foo orderby f.foo, f.bar select f)
虽然这编译它不按预期工作。 它只是由f.bar命令忽略布尔字段。
我很愚蠢我知道,但是我需要做些什么来获得这种行为?
谢谢
这应该可以正常工作 – 它应该首先为具有false
foo值的实体sorting,然后是具有true
foo值的实体。
这肯定适用于LINQ to Objects – 您实际使用哪种LINQ提供程序?
这是一个可以工作的LINQ to Objects示例:
using System; using System.Linq; public static class Test { public static void Main() { var data = new[] { new { x = false, y = "hello" }, new { x = true, y = "abc" }, new { x = false, y = "def" }, new { x = true, y = "world" } }; var query = from d in data orderby dx, dy select d; foreach (var result in query) { Console.WriteLine(result); } } }
只是想做到这一点,似乎没有任何隐含的顺序。 我做了以下更明确:
Something.OrderBy(e=>e.SomeFlag ? 0 : 1)
把某些事情归结为错误。