有可能得到以下链接吗?

本文关键字:链接 有可能 | 更新日期: 2023-09-27 18:02:23

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

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

有可能得到以下链接吗?

不,它不是。

试试这个:

var _orders = from o in tblOrders 
              where _ids.Contains(o.CustomerId)
              select o;

您使用的关键字in,它在c#中用于其他目的。它不像SQL中的IN。它在foreach语句中使用。例如:

foreach(var _id in _ids)
    Console.WriteLine(_id);

还用作泛型类型参数的泛型修饰符。有关后者的更多文档,请查看此处。

可以使用_ids数组的Contains方法

var _orders = from o in tblOrders
              where _ids.Contains(o.CustomerId)
              select o;

使用如下代码

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