簡體   English   中英

LINQ for string StartsWith List <string>中的一些值

[英]LINQ for string StartsWith some value in List<string>

我正在使用LINQ解析XDocument。 我想檢查其中一個XElements,其中“BusinessStructure”鍵是以List<string> filters一個字符串開頭的 換句話說,讓我說我有:

x.Element("BusinessStructure").Value = "testing123"

var filters = new List<string> {"test", "hello"}

使用LINQ,我該如何做......

...
where x.Element("BusinessStructure").Value.StartsWith(filters[0])
select new...

但是,我想要“遍歷”列表中的所有值並檢查XElement值是否以它開頭,而不是獲取過濾器列表的第一個索引。 這可能是使用LINQ還是我必須使用foreach

你可以做一個直接的LINQ解決方案,稍微修改你的查詢:

let bs = x.Element("BusinessStructure")
where bs != null && filters.Any(f => bs.Value.StartsWith(f))

或者你可以從你的過濾器構建一個正則表達式:

var prefixRegex = new Regex("\\A" + string.Join("|",filters.Select(f=>Regex.Escape(f)));
...
let bs = x.Element("BusinessStructure")
where bs != null && prefixRegex.IsMatch(bs.Value)

如果考慮性能,請嘗試並測量兩者。

我會做那樣的事情;

filters.Any(f => x.Element("BusinessStructure").Value.IndexOf(f)==0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM