使用linq从字符串数组中只删除一个元素

时间:2017-09-12 15:14:04

标签: c#-4.0

我有以下代码:

string[] s = {"one", "two", "three", "two", "Four"}; 
s = s.Where(x => x!="two").ToArray(); 

我想删除"两个"只有一次使用linq有没有办法做到这一点?我上面尝试的代码删除了"两个"数组中的元素。

2 个答案:

答案 0 :(得分:1)

好吧,也许你想删除一般的重复项,然后它很简单:

s = s.Distinct().ToArray();

否则您可以使用GroupBy

s = s.GroupBy(str => str).SelectMany(g => g.Key != "two" ? g : g.Take(1)).ToArray();

这通常允许重复,但two必须是唯一的。

答案 1 :(得分:0)

如果您只想删除第一个匹配项:

var t = s.ToList();
t.Remove(value);
s = t.ToArray();

否则它是.Distinct()函数