Coo*_*pps 1 c# search combinations list
我有以下内容:
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"};
Run Code Online (Sandbox Code Playgroud)
我想搜索此列表并查找值的组合,如果找到组合则返回bool.
首先,我可以在Street Property中搜索单个值:
bool StreetIsFound = MyAddressList.Select(x => x.Street).Intersect(StreetToFind).Any();
Run Code Online (Sandbox Code Playgroud)
和郊区一样:
bool SuburbIsFind = = MyAddressList.Select(x => x.Suburb).Intersect(SuburbToFind).Any();
Run Code Online (Sandbox Code Playgroud)
但我希望能够在组合中搜索两者(bool StreetandSuburbFound)
因此,如果我搜索StreetToFind和SuburbToFind,StreetandSuburbFound将是真的,但如果搜索StreetToFind和secondSuburbToFind将是错误的.
你可以通过一个电话来完成这一切Any.像这样
var isFound = MyAddressList.Any(x => StreetToFind.Contains(x.Street) && SuburbToFind.Contains(x.Suburb));
Run Code Online (Sandbox Code Playgroud)
或者在查询语法中
var isFound =
(from x in MyAddressList
where StreetToFind.Contains(x.Street)
&& SuburbToFind.Contains(x.Suburb)
select x)
.Any();
Run Code Online (Sandbox Code Playgroud)