abdul subhan mohammed Ответов: 1

Как сравнить три идентификатора списка в LINQ C#?


Привет ребята,

У меня есть 3 списка, и я хочу сравнить его модули.

List C1
-------------
 ID | MODULE |
-------------|
 1  |  M1    |
-------------|
 2  |  M2    |
-------------|
 3  |  M3    |
--------------


List C2
-------------
 ID | MODULE |
-------------|
 1  |  M1    |
-------------|
 2  |  M2    |
-------------|
 3  |  M4    |
--------------


List C3
-------------
 ID | MODULE |
-------------|
 1  |  M5    |
-------------|
 2  |  M6    |
-------------|
 3  |  M7    |
--------------


Что я уже пробовал:

Я хочу сравнить эти три списка друг с другом.

если какое-то одно значение какой-либо таблицы совпадает с этим, то я не хочу брать этот список.

Пожалуйста, помогите мне.

Спасибо

Karthik_Mahalingam

каков ваш ожидаемый результат?

Afzaal Ahmad Zeeshan

Например, как сказал Картик, каковы ожидания от этой программы? Источники данных вообще не имеют никакого смысла, если вы не знаете алгоритм, который нужно выполнить.

1 Ответов

Рейтинг:
0

David_Wimbley

Я не знаю, что означает "если какое-либо одно значение какой-либо таблицы совпадает, то я не хочу брать этот список", но вот как вы можете сравнивать списки с помощью linq

Поэтому я создал класс для представления вашей таблицы

public class CodeProject
{
    public int Id { get; set; }
    public string Module { get; set; }
}


Затем, используя ваши данные в качестве примера, заполните список и выполните сравнение со сложными объектами.

var c1 = new List<codeproject>();
            var c2 = new List<codeproject>();
            var c3 = new List<codeproject>();

            c1.Add(new CodeProject { Id = 1, Module = "M1" });
            c1.Add(new CodeProject { Id = 2, Module = "M2" });
            c1.Add(new CodeProject { Id = 3, Module = "M3" });

            c2.Add(new CodeProject { Id = 1, Module = "M1" });
            c2.Add(new CodeProject { Id = 2, Module = "M2" });
            c2.Add(new CodeProject { Id = 3, Module = "M4" });

            c3.Add(new CodeProject { Id = 1, Module = "M5" });
            c3.Add(new CodeProject { Id = 2, Module = "M6" });
            c3.Add(new CodeProject { Id = 3, Module = "M7" });

            // Get items that exist in c1 list
            var similarC1toC2 = c1.Where(m => c2.Select(x => x.Module).Contains(m.Module));
            var similarC1toC3 = c1.Where(m => c3.Select(x => x.Module).Contains(m.Module));

// Get items that exist in c1 list
            var notsimilarC1toC2 = c1.Where(m => !c2.Select(x => x.Module).Contains(m.Module));
            var notsimilarC1toC3 = c1.Where(m => !c3.Select(x => x.Module).Contains(m.Module));

            if (similarC1toC2.Any())
            {
                Console.WriteLine("List c1 and c2 share values, don't use");
            }

            if (similarC1toC3.Any())
            {
                Console.WriteLine("List c1 and c3 share values, don't use");
            }
</codeproject></codeproject></codeproject>


В приведенном выше примере показано, какие значения из списка совпадают. Если вы хотите получить то, что значения не существуют между двумя списками, то используйте переменные notsimilar*.

Надеюсь, это то, что вы ищете.