具有类型 List<string> 的两个列表所需的方法语法的 Linq 查询
Linq query with method syntax needed for two lists with type List<string>
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",
};
我需要一个带有 returns "This is a Lemon" 方法语法的 linq 查询,
"This is a Orange" 来自 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);
}
}
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(
p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
)
);
此代码的英文解释为 "select all messages where the message doesn't contain any string in the partial messages list."
如果要忽略大小写:
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(p => string.Compare(p, message, true) == 0)
);
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",
};
我需要一个带有 returns "This is a Lemon" 方法语法的 linq 查询, "This is a Orange" 来自 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);
}
}
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(
p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
)
);
此代码的英文解释为 "select all messages where the message doesn't contain any string in the partial messages list."
如果要忽略大小写:
var unknownFruites = fullMessagesList.Where(
message => !partialMessagesList.Any(p => string.Compare(p, message, true) == 0)
);