var fullMessagesList = new List<string>(){
"This is Apple",
"This is mango",
"This is a Lemon",
"This is a Orange"
};
var partialMessagesList = new List<string>(){
"Apple",
"mango",
};
我需要一个带方法语法的linq查询,返回“This is a Lemon”, 来自fullMessagesList的“这是一个橙色”。我需要为另一个列表中的每个文本检查contains()。
我使用旧学校的foreach循环编写它,但需要使用方法语法用linq来计算它。
var unknownFruites = new List<string>();
foreach (var message in fullMessagesList)
{
var flag = 1;
foreach (var partialmessage in partialMessagesList)
{
if (message.Contains(partialmessage))
{
flag = 0;
break;
}
}
if (flag == 1)
{
unknownFruites.Add(message);
}
}
答案 0 :(得分:1)
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(
p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
)
);
此代码的英语解释是&#34;选择消息在部分消息列表中不包含任何字符串的所有消息。&#34;
答案 1 :(得分:0)
如果你想忽略大小写:
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(p => string.Compare(p, message, true) == 0)
);