У меня есть два списка идентификаторов, оба списка имеют одинаковое количество элементов, у них одинаковые идентификаторы, они просто не в порядке, например:
List 1 - (194, 195, 196, 197, 198, 199, 200)
List 2 - (194, 200, 198, 195, 197, 196, 199)
У меня есть оператор if, который сравнивает эти идентификаторы:
if (cells[i].scheduleTaskID == taskid)
Это хорошо работает для первого id, потому что они совпадают (194), но другие идентификаторы не совпадают, есть ли я, если я могу сказать, что taskid не соответствует ячейкам [i].scheduleTaskID повторить идентификатор задачи позже?
Вот дополнительный код:
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();
}
}
Вы можете использовать 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;
}
}
Учитывая, что оба типа: type 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
}
}
Хотя я немного смущен, что на самом деле вы пытаетесь сравнить здесь?
SortedList
был бы лучшим вариантом здесь тогда?