Lambda表达式为MINUS两个字符串数组

时间:2012-07-23 19:33:08

标签: c# lambda

我正在尝试在两个字符串数组上执行SQL MINUS的等效操作。这是我试图复制的代码:

        string returnValue = "";
        foreach (string eachWord in allWords)
        {
            foreach (string ignoreWord in ignoreWords)
            {
                if (eachWord != ignoreWord)
                {
                    returnValue += eachWord;
                }
            }
        }

我想将其重写为:

returnValue = allWords.Minus(ignoreWords);

或同样简洁的东西。我意识到在幕后我最终会得到相同的代码,但我只是在迂腐!

2 个答案:

答案 0 :(得分:8)

returnValue = allWords.Except(ignoreWords);

答案 1 :(得分:0)

如果您只想让字符串不是IEnumerable<string>,您可以这样做:

var res = allWords.Except(ignoreWords);

然后,

StringBuilder sb = new StringBuilder();
       res.ForEach(item => sb.Append(item));
        string ss = sb.ToString();

或者如果你想要一些分隔符,你可以这样做:

string concatenatedStr =  string.Join(",", res.ToArray());