ich ein Array von Ids, die ich an den Entity Framework über eine Linq-Abfrage übergeben wollenLINQ Int Ids zur Abfrage von einem Array
Streichhölzer zurückzukehrenich Linq Abfragen geschrieben haben, die Ids in Strings umwandeln und verwenden Sie den 'Enthält' Betreiber, wie zum Beispiel:
Modell
public class Order {
public long OrderId { get; set; }
public string Name { get; set; } ...}
Order[] orders = { new Order { OrderId = 123, Name = "Order1" }, new Order {...},...};
, für die ich so etwas wie verwenden:
long[] testArray = {123, 456};
und dann
var result = orders.Where(i => testArray.ToString().Contains(i.OrderId.ToString()));
aber tun wirklich die Ids Gießen müssen halten ich Strings? Es sieht so aus, als ob ich nicht auf 'Contains' zugreifen kann, wenn ich sie als Ints behalte.
Letztendlich möchte ich in der Lage sein, dies als Teil einer Abfrage zu verwenden, die auf das Entity Framework zugreift und die Abfrage als Teil eines IQueryable <> übergibt, um sicherzustellen, dass ich keine riesigen Datenmengen zurückgebe, wenn ich nur möchte eine Handvoll, wie zum Beispiel:
var orders = _repo.Orders().Where(i => orderArray.Contains(i.OrderId));
jede Lösung so wäre es sinnvoll sein, wenn die Abfrage params (der int-Array) durch die EF anstatt all Daten bekommen und dann im Speicher zu überprüfen.
Prost!
Dies ist die Art von Dingen, die ich mit EF tun ... var orders = _repo.Orders() Wo (i => orderArray.Contains (i.OrderId)); scheint mir gut. Was ist das Problem genau? – Kek
@Kek: Ich glaube nicht, dass Sie lokale Listen/Arrays bei der Abfrage von EF verwenden können – Jan
mmm Ich würde sagen, Sie können. Die Liste wird enumeriert und in eine Liste von (id = Cste) OR umgewandelt ... Ich sehe das Problem – Kek