我有一个ID数组,我想通过Linq查询传递给实体框架以返回任何匹配
我编写了Linq查询,可以将Ids转换为字符串并使用'Contains'运算符,例如:
模型
public class Order {
public long OrderId { get; set; }
public string Name { get; set; } ...}
Order[] orders = { new Order { OrderId = 123, Name = "Order1" }, new Order {...},...};
Run Code Online (Sandbox Code Playgroud)
我可以使用类似的东西:
long[] testArray = {123, 456};
Run Code Online (Sandbox Code Playgroud)
然后
var result = orders.Where(i => testArray.ToString().Contains(i.OrderId.ToString()));
Run Code Online (Sandbox Code Playgroud)
但我真的需要继续将Ids投射到弦上吗?如果我将它们保持为整数,我看起来好像无法访问'Contains'.
最终,我希望能够将此作为访问实体框架的查询的一部分,因此将查询作为IQueryable <>的一部分传递,以确保当我只需要一个handfull时,我不会返回大量的数据,例如如:
var orders = _repo.Orders().Where(i => orderArray.Contains(i.OrderId));
Run Code Online (Sandbox Code Playgroud)
所以任何解决方案如果通过EF查询params(int数组)而不是获取所有数据然后在内存中检查它将是有用的.
干杯!
Jon*_*eet 17
但我真的需要继续将Ids转换成字符串
绝对不.目前尚不清楚它是什么bars,但假设它应该是真的orders,你可以使用:
var result = orders.Where(i => testArray.Contains(i.OrderId));
Run Code Online (Sandbox Code Playgroud)
或执行加入:
var result = orders.Join(testArray, o => o.OrderId, id => id, (o, id) => o);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21422 次 |
| 最近记录: |