我正在寻找一个c#Linq解决方案。
给定一个字符串列表,让我们调用列表S
"alan.foo", "bob.htm", "dave.tea", "other.yuy"
然后,还给出了另一个字符串列表,让我们称之为X
".foo", ".htm", ".tea"
什么是linq表达式只返回S中以X中的字符串结尾的那些记录?
答案 0 :(得分:6)
var result = S.Where(x=> X.Any(y=>x.EndsWith(y)));
如果你想忽略大小写:
var result = S.Where(x => X.Any(y => x.EndsWith(y, StringComparison.CurrentCultureIgnoreCase)));
答案 1 :(得分:1)
试试这个;
List<string> S = new List<string>() { "alan.foo", "bob.htm", "dave.tea", "other.yuy" };
List<string> X = new List<string>() { ".foo", ".htm", ".tea" };
var newlist = S.Where(n => X.Any(s => n.EndsWith(s)));
foreach (var item in newlist)
{
Console.WriteLine(item);
}
输出将是;
alan.foo
bob.htm
dave.tea
这是DEMO。
答案 2 :(得分:0)
尝试这样的事情。
var list1 = new List<string> { "alan.foo", "bob.htm", "dave.tea", "other.yuy" };
var list2 = new List<string> { ".foo", "htm", ".adf" };
List<string> list3 = (from n in list1
from l in list2
where n.EndsWith(l)
select n).ToList();
希望它有所帮助。