2013-03-28 25 views
1

内我有以下几点:C# - 在搜索的组合列表

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"}; 

我想通过这个列表来搜索和查找值的组合,如果组合中返回一个布尔值。

首先,我可以搜索中街物业的个别值:

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

与同为郊区:

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

,但我希望能够在搜索两种组合(布尔StreetandSuburbFound)

这样,如果我搜索StreetToFind和SuburbToFind,StreetandSuburbFound将是真实的,但如果搜索StreetToFind和s是假的econdSuburbToFind。

回答

5

您可以通过致电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(); 
+0

啊你打我吧:) – Charleh 2013-03-28 02:10:04

1

或PSWG的代码的方法链版本:

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

(明显调整与Contains等为neccessary)

+0

对不起,没有多看OPs代码,看着你的回答并没有看到阵列 - 我会换另一种方式,然后包含在数组中 – Charleh 2013-03-28 02:14:46

+0

感谢您的纠正。 – 2013-03-28 02:16:54