我有两个ID列表,两个列表都有相同数量的项目,它们具有相同的ID,它们只是不按顺序排列,例如:
List 1 - (194, 195, 196, 197, 198, 199, 200)
List 2 - (194, 200, 198, 195, 197, 196, 199)
我有一个if语句来讨论这些ID:
if (cells[i].scheduleTaskID == taskid)
这适用于第一个id,因为它们匹配(194)但其他ID不匹配,是否可以说如果taskid不匹配单元格[i] .scheduleTaskID稍后尝试任务ID?
以下是其他代码:
int taskid = reader.GetInt32(0); (gets taskid from database)
List<CellModel> cells
这是CellModel:
public class CellModel
{
public uint scheduleTaskID { get; set; }
public string task { get; set; }
public string baselineDate { get; set; }
public string scheduledDate { get; set; }
public string actualDate { get; set; }
public string finishedDate { get; set; }
public bool selected { get; set; }
public override string ToString()
{
return scheduleTaskID.ToString();
}
}
答案 0 :(得分:2)
您可以在集合上使用LINQ来查看您的值是否与集合中包含的任何值匹配,如下所示:
List<int> list1 = new List<int> { 194, 195, 196, 197, 198, 199, 200 }; //populate this from db
List<CellModel> cells;
if(list1.Any(id => id.Equals(cells[i].scheduleTaskID)))
如果您在数据库中有大量的ID,并且您不想下拉整个列表进行比较,那么您也可以循环阅读器。
while(reader.Read)
{
int taskid = reader.GetInt32(0);
if (cells[i].scheduleTaskID == taskid)
{
// take action and end reading
break;
}
}
答案 1 :(得分:0)
考虑到两者都是List<int>
型;如果您唯一担心的是;您的列表中的数字不是有序的,那么您可以通过调用列表上的Sort()
函数对它们进行排序,然后可以循环它们以检查内容相等,如下所示
List<int> list1 = new List<int> { 194, 195, 196, 197, 198, 199, 200 };
List<int> list2 = new List<int> { 194, 200, 198, 195, 197, 196, 199 };
list2.Sort();
list1.Sort();
for (int i = 0; i < list1.Count; i++)
{
if (list1[i] == list2[i])
{
//Your Own processing logic here
}
}
虽然我对此感到有点困惑,你在这里想要比较的是什么?