3 回答

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊
您需要先將搜索模式與+
符號分開,然后您可以輕松找出列表中哪些項目包含您的搜索模式,
var result = resourceList.Where(x => searchword.Split('+').Any(y => x.Contains(y.Trim()))).ToList();
在哪里:
你resourceList
的是
List<string> resourceList = new List<string> { "xyz", "dfgabr", "asxy", "abec", "def", "geh", "mnbj" };
搜索模式是,
string searchword = "xy+ ab";
輸出:(來自調(diào)試器)

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊
嘗試以下不需要 Regex :
List<string> resourceList= new List<string>() {"xyz","dfgabr","asxy","abec","def","geh","mnbj"};
List<string> searchPattern = new List<string>() {"xy","ab"};
List<string> results = resourceList.Where(r => searchPattern.Any(s => r.Contains(s))).ToList();

TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊
您可以嘗試在Linq的幫助下進(jìn)行查詢:
List<string> resourceList = new List<string> {
"xyz", "dfgabr", "asxy", "abec", "def", "geh", "mnbj"
};
string input = "xy+ ab";
string[] toFind = input
.Split('+')
.Select(item => item.Trim()) // we are looking for "ab", not for " ab"
.ToArray();
// {"xyz", "dfgabr", "asxy", "abec"}
string[] result = resourceList
.Where(item => toFind
.Any(find => item.IndexOf(find) >= 0))
.ToArray();
// Let's have a look at the array
Console.Write(string.Join(", ", result));
結(jié)果:
xyz, dfgabr, asxy, abec
如果要忽略大小寫,請將StringComparison.OrdinalIgnoreCase參數(shù)添加到IndexOf
string[] result = resourceList
.Where(item => toFind
.Any(find => item.IndexOf(find, StringComparison.OrdinalIgnoreCase) >= 0))
.ToArray();
- 3 回答
- 0 關(guān)注
- 98 瀏覽
添加回答
舉報