比较两个列表并返回常用条目

时间:2011-01-31 20:59:26

标签: c# list

我有供应商列表。我还有一份供应商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();

5 个答案:

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

执行此操作的几种方法之一...使用词典或排序列表会更快