Linq のブール値による順序 質問する

Linq のブール値による順序 質問する

文字列である f.bar で並べ替えたい linq クエリがありますが、まずブール フィールドである f.foo で並べ替えたいとも思っています。以下のクエリのように。

(from f in foo
orderby f.foo, f.bar
select f)

これはコンパイルされますが、期待どおりには動作しません。ブールフィールドを無視して、単に f.bar で順序付けするだけです。

私がバカなのは分かっていますが、この動作を実現するには何をする必要がありますか?

ありがとう

ベストアンサー1

それはうまくいくはずです - エンティティをfalsefoo 値が最初、次に foo 値を持つものtrue

それは確かに 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 d.x, d.y
                    select d;
        
        foreach (var result in query)
        {
            Console.WriteLine(result);
        }
    }
    
}

おすすめ記事