C# 从列表中查找属性值<;Postavke>;()与林克

C# 从列表中查找属性值<;Postavke>;()与林克,c#,C#,我有“Postavke”类,然后将其存储到 List<Postavke> postavke = new List<Postavke>(); 如果你能确定只有一场比赛,这就行了 var address = poatavke.Where(p=>p.Name == name && p.Surname == surname).Single().Address; 如果您不知道是否没有匹配项,或者不知道是否有匹配项,您可以: var posta = poa

我有“Postavke”类,然后将其存储到

List<Postavke> postavke = new List<Postavke>(); 

如果你能确定只有一场比赛,这就行了

var address = poatavke.Where(p=>p.Name == name && p.Surname == surname).Single().Address;
如果您不知道是否没有匹配项,或者不知道是否有匹配项,您可以:

var posta = poatavke.Where(p=>p.Name == name && p.Surname == surname).SingleOrDefault()
var address = posta == null ? string.Empty : posta.Address;
如果您不知道将有多少个匹配项,但始终希望第一个匹配项(或者正在使用不理解Single()的ET)


您可以查询postavke中包含姓名和姓氏的所有结果,并将结果放入列表中。将结果放入我发现的列表中,可以更容易地验证和处理未看到的项目,因为从外观上看,可能会出现重复的项目

如果结果必须包含列表项中的所有数据,则:

List<Postavke> results = new List<Postavke>();

var query1 = from a in postavke
             where a.Name == searchName
             && a.Surname == searchSurname
             select a;

results.AddRange(query1);

通过使用Distinct()方法,它将对查询进行排序并删除重复项,这样列表的顺序就不会与不使用它时的顺序相同

如果您只需要一个结果,那么使用

results.Count
如果它等于1,你可以继续,否则会抛出一条信息,或者你可能想用其他方式处理它。其他有效的方法是在搜索过程中将值设置为lower()和Trim(),以避免实际更改原始文本

以最后一个查询为例:

List<string> results = new List<string>();

var query1 = from a in postavke
             where a.Name.ToLower().Trim() == searchName.ToLower().Trim() 
             && a.Surname.ToLower().Trim()  == searchSurname.ToLower().Trim() 
             select a.Address;

results.AddRange(query1);

希望这会有所帮助

到目前为止您尝试了什么?你有什么问题?
List<string> results = new List<string>();

var query1 = from a in postavke
             where a.Name == searchName
             && a.Surname == searchSurname
             select a.Address;

results.AddRange(query1);
results.AddRange(query1);
results.AddRange(query1.Distinct());
results.Count
List<string> results = new List<string>();

var query1 = from a in postavke
             where a.Name.ToLower().Trim() == searchName.ToLower().Trim() 
             && a.Surname.ToLower().Trim()  == searchSurname.ToLower().Trim() 
             select a.Address;

results.AddRange(query1);
List<string> results = new List<string>();

var query1 = from a in postavke
             select a.Address;

query1 = query1.Where(h => h.Name == searchName);
query1 = query1.Where(h => h.Surname == searchSurname);

results.AddRange(query1);
query1 = query1.Where(h => h.Name == searchName && h.Surname == searchSurname);