10

一致を返すためにLinqクエリを介してエンティティフレームワークに渡したいIDの配列があります

Id を文字列に変換し、次のような「Contains」演算子を使用できる Linq クエリを作成しました。

モデル

public class Order {
  public long OrderId { get; set; }
  public string Name { get; set; } ...}

Order[] orders = { new Order { OrderId = 123, Name = "Order1" }, new Order {...},...};

次のようなものを使用できます。

long[] testArray = {123, 456};

その後

var result = orders.Where(i => testArray.ToString().Contains(i.OrderId.ToString()));

しかし、IDを文字列にキャストし続ける必要がありますか? それらをintとして保持すると、「Contains」にアクセスできないように見えます。

最終的には、これを Entity Framework にアクセスするクエリの一部として使用できるようにしたいので、そのクエリを IQueryable<> の一部として渡し、一握りだけが必要な場合に大量のデータを返さないようにします。なので:

var orders = _repo.Orders().Where(i => orderArray.Contains(i.OrderId));

したがって、すべてのデータを取得してからメモリ内でチェックするのではなく、EF を介してクエリ パラメータ (int 配列) を使用すると、どのような解決策も役立ちます。

乾杯!

4

2 に答える 2