[英]Check if List with multiple Columns contains string
我如何檢查列表 RequirementList 的第一列是否包含字符串/元素
public class RequirementList
{
public string? Name{ get; set; }
public string? Value { get; set; }
}
在這里檢查:
var requirementList = new List<RequirementList>();
//requirementList is already filled
if(requirementList.Name.Contains("Test"))
{
//do something
}
考慮到這里的 Name 可以是 null,你應該這樣做:
if(requirementList.Any(x=>x.Name is not null && x.Name.Contains("Test"))
請注意,此處的Contains
將區分大小寫。 您可以檢查此答案以處理不區分大小寫的情況Case insensitive 'Contains(string)'
要用現代的 c# 完成或賦予另一種風味,您可以將其寫為
if(requirementList.Any(x=>x?.Name.Contains("Test") ?? false)
你似乎對列表和屬性有一些誤解,所以我會盡量讓它更清楚一點。 其中一些已被其他人提到。
首先,如果不是列表,不要調用列表。 RequirementList
應該稱為RequirementItem
或只是Requirement
。
現在您的定義如下所示:
var requirementList = new List<Requirement>();
看,這已經更合乎邏輯了。
其次,Name 和 Value 是 Requirement 的屬性,它們不是列,您不應該這樣想。 因此first不適用,沒有 first 屬性
public class Requirement
{
public string? Name{ get; set; }
public string? Value { get; set; }
}
相當於
public class Requirement
{
public string? Value { get; set; }
public string? Name{ get; set; }
}
最后看起來你想對名稱中帶有測試的要求做一些特殊的事情,所以你應該先 select 要求:
var requirementList = new List<Requirement>();
...
var testRequirements = requirementList.Select(x=>x?.Name.Contains("Test"));
if (testRequirements.Any())
{
foreach (var req in testRequirements)
{
// do something with req
}
}
這為您省去了先執行Any
然后再執行 select 那些您需要處理的麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.