这里有一条很好的信息,使用起来似乎更直接。是的,这确实更有意义。@Trinidad:但不会给你答案count@recursive,这不是问题的一部分。请参阅:在未排序的列表中,确定是否存在重复项这是完美的,因为我是C#新手,需要一些东西来跟踪一组值内每个实
这里有一条很好的信息,使用起来似乎更直接。是的,这确实更有意义。@Trinidad:但不会给你答案count@recursive,这不是问题的一部分。请参阅:在未排序的列表中,确定是否存在重复项这是完美的,因为我是C#新手,需要一些东西来跟踪一组值内每个实,c#,linq,algorithm,list,generics,C#,Linq,Algorithm,List,Generics,这里有一条很好的信息,使用起来似乎更直接。是的,这确实更有意义。@Trinidad:但不会给你答案count@recursive,这不是问题的一部分。请参阅:在未排序的列表中,确定是否存在重复项这是完美的,因为我是C#新手,需要一些东西来跟踪一组值内每个实例的计数(例如,从http资源中提取20000多个文件名),我想知道在可能用重复的文件名覆盖文件之前是否存在任何重复项。我一直在考虑使用字典,所以看到这里推荐使用字典是令人鼓舞的。Don't call list.Count()方法。请改用Cou
这里有一条很好的信息,使用起来似乎更直接。是的,这确实更有意义。@Trinidad:但不会给你答案count@recursive,这不是问题的一部分。请参阅:在未排序的列表中,确定是否存在重复项这是完美的,因为我是C#新手,需要一些东西来跟踪一组值内每个实例的计数(例如,从http资源中提取20000多个文件名),我想知道在可能用重复的文件名覆盖文件之前是否存在任何重复项。我一直在考虑使用字典,所以看到这里推荐使用字典是令人鼓舞的。Don't call list.Count()方法。请改用Count属性。我知道LINQ是经过优化的,它会在内部使用它,但我仍然认为最好使用这个属性。如果有重复的话,它会更有效。但是如果没有重复,那么它做的工作量是相同的。使用哪一种可能取决于“正常”情况下是否存在重复项。@Petar Petrov:这一点很好。可能应该只使用
foreach
。并使参数IEnumerable
而不是List
。这是一种优雅的方法,类似于返回重复项的方法。嗯,我认为你的答案没有回答这个问题。我知道问题是,给定一个已经存在的列表,找出一个副本。您提出了一种手动填充列表的方法,即在插入副本时在线输出。您还将uniquelist命名为list,但您允许重复插入,我认为这不是您的意图(小错误)。我说的对吗?编辑:找到一个副本,->。。找出它是否包含重复项:-)我接受你的观点,但是在做这个小练习(我不是专家,这是我正在做的课程的一部分)时,我找到了这个页面,同时寻找一种方法来确定输入是否是列表中的重复项。因此,答案代表了其他可能不太清楚自己在寻找什么的人。在研究过程中,我找不到答案“if(uniqueNums.Contains(input)),所以这可能会帮助其他人在编码生命的早期阶段这可能会回答你的另一个问题,是的,输入没有被阻止,这不是练习的一部分。明白你的意思,但我仍然认为这是错误的。如果一个问题与答案(你有的)不完全相符,最好创建一个新问题(为你的答案)并简单地自我回答同一个问题。这是一种完全合法的做事方式。此外,由于这个问题不同,人们很难找到针对不同问题的代码片段。也许在你的情况下,一篇小博客文章更有意义。但这只是我的观点。最后一句话:有时,如果你写的答案与问题不符,你就有可能被否决。当做
var list = new List<string>();
// Fill the list
if(list.Count != list.Distinct().Count())
{
// Duplicates exist
}
bool hasDuplicates<T>(List<T> myList) {
var hs = new HashSet<T>();
for (var i = 0; i < myList.Count; ++i) {
if (!hs.Add(myList[i])) return true;
}
return false;
}
var something = new List<string>() { "One", "One", "Two", "Three" };
var dictionary = new Dictionary<string, int>();
something.ForEach(s =>
{
if (dictionary.ContainsKey(s))
{
dictionary[s]++;
}
else
{
dictionary[s] = 1;
}
});
List<string> list = new List<string> {"A", "A", "B", "C", "D"};
HashSet<string> hashSet = new HashSet<string>();
if(list.Any(r => !hashSet.Add(r)))
{
//duplicate exists.
}
var list = new List<string> {"1", "2","3", "1", "2"};
var hasDuplicates = list.GroupBy(x => x).Any(x => x.Skip(1).Any());
if (dgCoil.ItemsSource.Cast<BLL.Coil>().ToList().Count != dgCoil.ItemsSource.Cast<BLL.Coil>().Select(c => c.CoilNo).Distinct().Count())
{
//Duplicate detected !!
return;
}
Console.WriteLine("Please enter 5 unique numbers....");
List<int> uniqueNums = new List<int>() { };
while (uniqueNums.Count < 5)
{
int input = Convert.ToInt32(Console.ReadLine());
if (uniqueNums.Contains(input))
{
Console.WriteLine("Add a different number");
}
uniqueNums.Add(input);
}
uniqueNums.Sort();
foreach (var n in uniqueNums)
{
Console.WriteLine(n);
}