我有一个列表对象,其中包含如下所示的int:
var list = new List<int>();
var ids=getting only ids from database.for Eg:1,2,1,3,5,6,3.
现在我要做的是从数据库中取出ID后我想要添加到我的列表对象中,如果添加了任何不同的ID(例如:ids:2),那么我想从循环中断开。
对于Ex :在我的列表中添加1之后,如果我尝试添加2在我的列表对象中不存在,那么我想从我的循环中断开状态,在循环外找到不同的元素。
在列表对象中添加值,直到找到重复值意味着在我的列表对象中仅添加重复值,如果找到不在列表中的非重复值,则在列表中添加1后从循环中断开循环。因为2是不同的,它不在列表对象中。
这是我的代码:
bool status;
for (var i = 0; i < ids.Count; i++)
{
list.Add(ids);
}
//here i want status with different element found or not
注意:我只想在列表对象中添加重复值,直到找到新的ID。
答案 0 :(得分:2)
foreach
来迭代ids
break
在foreach
中的工作方式与for
list
Contains
检查list
是否已包含id
。
foreach
和Contains
遍历列表元素代码:
foreach (var id in ids)
{
if (list.Contains(id))
{
break;
}
list.Add(id);
}
答案 1 :(得分:2)
我只想在列表对象中添加重复值,直到找到不同的ID。
var list = new List<int>{ 1, 2, 3, 4};
var idsFromDb = new List<int> {1, 2, 5, 3};
foreach (int id in idsFromDb)
{
if (list.Contains(id))
{
break;
}
list.Add(id);
}
答案 2 :(得分:1)
您可以使用Contains
status = false;
for (var i = 0; i < ids.Count; i++)
{
if (list.Count > 0 && !list.Contains(ids[i])){
list.Add(ids[i]); //add this, be it duplicate or not
status = true; //different element found
break; //break if this is not duplicate
} else {
//do something for duplicate
list.Add(ids[i]); //add this, be it duplicate or not
}
}
Contains
可以检查您的商品是否已存在于List
答案 3 :(得分:1)
这是您的desired HashSet<T>
+ LINQ方法:
var dupChecker = new HashSet<int> {ids[0]}; // add first element, now only duplicates are allowed
List<int> dupList = ids.TakeWhile(i => !dupChecker.Add(i)).ToList();