【问题标题】:c# - Searching for a combination within a listc# - 在列表中搜索组合
【发布时间】:2013-03-28 02:03:58
【问题描述】:

我有以下几点:

public class Address{
    public string Number { get; set; }
    public string Street { get; set; }
    public string Suburb { get; set; }
}

List<Address> MyAddressList = new List<Address>();

Address MyAddress = new Address();
myAddress.Number = "5"
myAddress.Street = "Smith St"
myAddress.Suburb = "Smithsville"
MyAddressList.Add(MyAddress);

Address MyAddress2 = new Address();
myAddress2.Number = "10"
myAddress2.Street = "John St"
myAddress2.Suburb = "Johnsville"
MyAddressList.Add(MyAddress2);

string [] StreetToFind = new string {"Smith St"};
string [] SuburbToFind = new string {"Smithsville"};
string [] secondSuburbToFind = new string {"Johnsville"};

我想搜索此列表并查找值的组合,如果找到该组合,则返回布尔值。

首先,我可以在 Street 属性中搜索单个值:

bool StreetIsFound = MyAddressList.Select(x => x.Street).Intersect(StreetToFind).Any();

郊区也一样:

bool SuburbIsFind = = MyAddressList.Select(x => x.Suburb).Intersect(SuburbToFind).Any();

但我希望能够同时搜索两者 (bool StreetandSuburbFound)

因此,如果我搜索 StreetToFind 和 SuburbToFind,StreetandSuburbFound 将为真,但如果搜索 StreetToFind 和 secondSuburbToFind,则为假。

【问题讨论】:

    标签: c# list search combinations


    【解决方案1】:

    您只需拨打Any 即可完成所有操作。像这样

    var isFound = MyAddressList.Any(x => StreetToFind.Contains(x.Street) && SuburbToFind.Contains(x.Suburb));
    

    或者在查询语法中

    var isFound =
        (from x in MyAddressList
         where StreetToFind.Contains(x.Street)
            && SuburbToFind.Contains(x.Suburb)
         select x)
        .Any();
    

    【讨论】:

      【解决方案2】:

      或者p.s.w.g的代码的方法链版本:

      MyAddressList.Any(x => StreetToFind.Contains(x.Street) 
                             && SuburbToFind.Contains(x.Suburb))
      

      (显然需要使用Contains 等进行调整)

      【讨论】:

      • 啊,抱歉没怎么看 OPs 代码,看了你的答案,没有看到数组——我会换一种方式,然后包含在数组上
      猜你喜欢
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多