![](/img/trans.png)
[英]LINQ to SQL query where a string StartsWith an element from a generic list
[英]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.