bugfix> c# > 投稿

プロジェクトを維持しながら、次のコードに遭遇しました query.Take(() => 1)

query タイプです IQueryable<T>

ラムダを渡すことは、ラムダを渡すこととは何が異なりますか int

編集:編集して、私が質問していないことを明確にします FirstOrDefault

回答 3 件
  • ここで説明することがいくつかあります。

    query.Take(() => 1 (ドキュメント)

    これは IQueryable<T> 単一のアイテムが含まれる場合があります。 SQLServerを使用するクエリを実行します TOP SQL Server2008以前で動作することを意味する構文。

    query.Take(1)

    これは以前のバージョンと似ていますが、新しいSQLServerを使用します OFFSET / FETCH 構文であり、レガシーサポートが必要でない限り推奨される方法です。

    query.FirstOrDefault()

    これにより、エンティティの単一のインスタンスが返されます。一致するものがない場合はnullが返されます。単一のアイテムが必要な場合は、通常、これが推奨される方法です。ただし、コードでnullをチェックする必要があります。

    列挙可能なものを返しますが、 query.FirstOrDefault 単一のアイテム、またはnullを提供します。彼らは非常に異なって実行されます

  • コードライターは、その行のドキュメントを作成する必要があります。

    ただし、MSFTドキュメントを使用する場合:

    https://docs.microsoft.com/en-us/dotnet/api/system.data.entity.queryableextensions.take?view=entity-framework-6.2.0

    public static System.Linq.IQueryable<TSource> Take<TSource> (this System.Linq.IQueryable<TSource> source, 
        System.Linq.Expressions.Expression<Func<int>> countAccessor);
    
    

    countAccessor Expression<Func<Int32>>

    返す要素の数に評価される式。

  • 取る戻り値 IQueryable<T>FirstOrDefault戻り値 T

あなたの答え