是否有可能获得以下的linq?

时间:2014-05-08 08:00:06

标签: c# linq

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);

上面的代码只是为了举例,我知道这是错的。但是,这可能吗?

3 个答案:

答案 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)));