SQL查询
SELECT *
FROM tblOrders
WHERE CustomerId in (3455,4423,7655,1000)
LINQ查询 ?
说,我有一个ID数组,那我该怎么搜索?
int[4] _ids;
_ids[0]=3455
_ids[1]=4423
_ids[2]=7655
_ids[3]=1000
var _orders = (from o in tblOrders
where (o.CustomerId in _ids[])
select o);
上面的代码只是为了举例,我知道这是错的。但是,这可能吗?
答案 0 :(得分:0)
不,不是。
试试这个:
var _orders = from o in tblOrders
where _ids.Contains(o.CustomerId)
select o;
您使用的关键字in
,它在C#中用于其他目的。它与IN
中的SQL
不同。
它用于foreach
语句中。例如:
foreach(var _id in _ids)
Console.WriteLine(_id);
此外,它还用作通用类型参数的通用修饰符。有关后者的更多文档,请查看here。
答案 1 :(得分:0)
您可以使用_ids数组的Contains
方法。
var _orders = from o in tblOrders
where _ids.Contains(o.CustomerId)
select o;
答案 2 :(得分:-1)
使用下面给出的代码
List<Orders> lstOrders = new List<Orders>();
Orders objOrders;
for (int index = 1; index <= 10; index++)
{
objOrders = new Orders();
objOrders.OrderID = index;
objOrders.Order = "Order_" + index.ToString();
objOrders.CustomerID = index;
lstOrders.Add(objOrders);
}
int[] _customers = { 1, 2, 3, 4, 5 };
List<Orders> lstFilteredOrders = new List<Orders>();
lstFilteredOrders.AddRange(lstOrders.FindAll(x => _customers.Any(y =>y == x.CustomerID)));