vin*_*ini 22 c# asp.net asp.net-mvc list c#-4.0
string[] lines3 = new string[100];
List<string> lines2 = new List<string>();
lines3 = Regex.Split(s1, @"\s*,\s*");
if (!lines2.Contains(lines3.ToString()))
{
lines2.AddRange(lines3.Distinct().ToArray());
}
Run Code Online (Sandbox Code Playgroud)
我检查了所有的空格等,但我仍然在我的lines2中得到重复的值 List
我必须在这里删除我的重复值
Ser*_*kiy 39
您可以使用Enumerable.Except从lines3获取不在lines2中的不同项:
lines2.AddRange(lines3.Except(lines2));
Run Code Online (Sandbox Code Playgroud)
如果lines2包含lines3中的所有项目,则不会添加任何内容.BTW内部除了用于Set<string>从第二序列获取不同的项目并验证第一序列中存在的那些项目.所以,它非常快.
Hab*_*bib 31
你的这张支票:
if (!lines2.Contains(lines3.ToString()))
Run Code Online (Sandbox Code Playgroud)
是无效的.您正在检查,如果你的lines2包含System.String[],因为lines3.ToString()会给你的.您需要检查项目是否lines3 存在lines2.
您可以迭代lines3检查每个项目是否存在lines2,然后添加它.就像是.
foreach (string str in lines3)
{
if (!lines2.Contains(str))
lines2.Add(str);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您lines2是任何空列表,那么您只需将lines3不同的值添加到列表中,如:
lines2.AddRange(lines3.Distinct());
Run Code Online (Sandbox Code Playgroud)
那么你的lines2意志包含不同的价值观
Fel*_*ani 24
使用HashSet<string>而不是a List<string>.它准备好执行更好的性能,因为您不需要为任何项目提供检查.该系列将为您管理它.这是a list和a 之间的区别set.样品:
HashSet<string> set = new HashSet<string>();
set.Add("a");
set.Add("a");
set.Add("b");
set.Add("c");
set.Add("b");
set.Add("c");
set.Add("a");
set.Add("d");
set.Add("e");
set.Add("e");
var total = set.Count;
Run Code Online (Sandbox Code Playgroud)
道达尔5和值是a,b,c,d,e.
实施List<T>不会给你本地的.你可以这样做,但你必须提供这种控制.对于样本,这个extension method:
public static class CollectionExtensions
{
public static void AddItem<T>(this List<T> list, T item)
{
if (!list.Contains(item))
{
list.Add(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
var list = new List<string>();
list.AddItem(1);
list.AddItem(2);
list.AddItem(3);
list.AddItem(2);
list.AddItem(4);
list.AddItem(5);
Run Code Online (Sandbox Code Playgroud)