我有供应商列表。我还有一份供应商ID列表。
public List<SAP_Vendor> Vendors { get; set; }
public List<string> SubcontractVendorIDs { get; set; }
我想要返回其{id}在SubcontractVendorIDs列表中的List<SAP_Vendor>
个供应商。
List<SAP_Vendor> SubcontractVendors = Vendors.Select(??).ToList();
或
List<SAP_Vendor> SubcontractVendors = Vendors.Where(??).ToList();
答案 0 :(得分:9)
使用Contains()
谓词中的Where()
方法:
List<SAP_Vendor> SubcontractVendors = Vendors.Where(v=> SubcontractVendorIDs.Contains(v.VendorID)).ToList();
答案 1 :(得分:8)
您可以执行inner join:
var query = from vendor in Vendors
join id in SubcontractVendorIDs on vendor.ID equals id
select vendor;
List<SAP_Vendor> subcontractVendors = query.ToList();
答案 2 :(得分:1)
List<SAP_Vendor> SubcontractVendors = Vendors.Where(v => SubcontractVendorIDs.Contains(v.Id)).ToList();
答案 3 :(得分:0)
您需要使用列表吗?使用LINQ,通常最好传递IEnumerables,并在实际需要数据时仅转换为列表。
至于您的实际问题,请使用Contains
方法。
Vendors.Where(v => SubcontractVendorIDs.Contains(v.Id));
答案 4 :(得分:0)
List<SAP_Vendor> SubcontractVendors = Vendors.Where(x => SubcontractVendorIDs.Any(y => x == y)).ToList();
执行此操作的几种方法之一...使用词典或排序列表会更快