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) 

把某些事情归结为错误。