если заявление ... если не этот идентификатор, попробуйте еще раз позже

1

У меня есть два списка идентификаторов, оба списка имеют одинаковое количество элементов, у них одинаковые идентификаторы, они просто не в порядке, например:

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();
        }
    }
  • 1
    Возможно, SortedList был бы лучшим вариантом здесь тогда?
  • 0
    Вы можете отсортировать список или вложенные циклы!
Показать ещё 2 комментария
Теги:
if-statement

2 ответа

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;
            }                
        }
0

Учитывая, что оба типа: 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
            }
        }

Хотя я немного смущен, что на самом деле вы пытаетесь сравнить здесь?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню