代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

使用LINQ的两个不同类型列表的区别

  •  5
  • TalkingCode  · 技术社区  · 15 年前

    List<Vehicle> unsoldVehicles
    List<string> ListDetailUrls
    

    每个车辆对象都有一个名为 URL标识 (字符串)当 ListDetailUrls 列表仅由字符串组成。 我需要车辆清单上的每辆车 URL标识 ListDetailUrls .

    到目前为止,我所做的是:

    List<Vehicle> missingVehicles = new List<Vehicle>(
        from uV in unsoldVehicles
        from de in ListDetailUrls
        where uV.UrlID != de
        select uV);
    

    丢失的车辆 未售出的货物 !

    我一直在寻找一种使用Except方法的方法,但我只找到两个列表类型相同的示例。

    3 回复  |  直到 15 年前
        1
  •  8
  •   kjn    15 年前

    var missingvehicles = from uV in unsoldVehicles
                        where !listDetailUrls.Contains(uV.UrlID )
                        select uV;
    
        2
  •  2
  •   Ani    15 年前

    全部的 组合 (vehicle, url) 哪里 vehicle.UrlID ! = url 你真正想做的是防止车辆被包括在 任何 UrlId .

    我建议:

    var urlIds = new HashSet<string>(ListDetailUrls);
    var missingVehicles = unsoldVehicles.Where(vehicle => !urlIds.Contains(vehicle.UrlID))
                                        .ToList();
    
        3
  •  1
  •   Yakimych    15 年前

    unsoldVehicles 列出 UrlIDs ListDetailUrls

    var missingVehicles = unsoldVehicles.Where(uv => !ListDetailUrls.Contains(uv.UrlID)).ToList();