-1
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 查询,并从 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);
   }
}                       
4

2 回答 2

1
var unknownFruites = fullMessagesList.Where(
    message => !partialMessagesList.Any(
        p => message.IndexOf(p, StringComparison.InvariantCultureIgnoreCase) >= 0
    )
);

这段代码的英文解释是“选择部分消息列表中消息不包含任何字符串的所有消息”。

于 2018-05-22T16:01:43.133 回答
0

如果你想忽略大小写:

var unknownFruites = fullMessagesList.Where(
    message => !partialMessagesList.Any(p => string.Compare(p, message, true) == 0)
);
于 2018-05-22T16:13:50.367 回答