https://dotnetfiddle.net/r5mVKw
я есть список в C # как:
List<Data> uData = new List<uData>();
Где uData заполняется из пользовательского интерфейса как:
{
Id: 1,
Name: "Smith",
Input: "7,8",
Output: "Output1",
CreatedBy: "swallac",
CreatedON: "12/01/2018"
},
{
Id: 2,
Name: "Austin",
Input: "9,10",
Output: "Output1",
CreatedBy: "amanda",
CreatedON: "12/03/2018"
},
{
Id: 3,
Name: "Smith",
Input: "22,22",
Output: "Output2",
CreatedBy: "swallac",
CreatedON: "12/01/2018"
},
{
Id: 4,
Name: "Smith",
Input: "9,8",
Output: "Output2",
CreatedBy: "aaa",
CreatedON: "12/01/2018"
},
{
Id: 5,
Name: "Peter",
Input: "7,8",
Output: "Output3",
CreatedBy: "swallac",
CreatedON: "12/02/2018"
}
То, что я хочу сделать, это поиск в этом списке по клавише «Выход» и выяснить, есть ли дубликаты в соответствующем значении комбинации клавиши «Вход» и CreatedBy.
Например, в приведенном выше списке примеров у меня есть три выхода: Output1, Output2, Output3. Теперь для списков с ключом значения Output как «Output1» и «Output3» соответствующее значение ключа «Input» и «CreatedBy» здесь дублируется. Значение «7,8» и «swallac» как совокупное значение. Это то, что я хочу выделить
Для этого я опробовал следующий запрос:
var myList = uData.GroupBy(l => l.Ouput)
.SelectMany(g => g.GroupBy(x => (x.Input, x.CreatedBy)).Where(x => x.Count() > 1))
.SelectMany(x => x);
Это не дает мне никакой ошибки, но не дает желаемого результата, поскольку в нем перечислены все данные. Что мне здесь не хватает.
--Updated ---
Ранее я хотел, чтобы ввод не повторялся в одном выводе, из-за чего у меня был следующий запрос.
uData.GroupBy(l => l.Ouput)
.Any(g => g.GroupBy(x => x.Input).Any(x => x.Count() > 1))
Теперь я хочу, чтобы другой запрос проверял, повторяется ли комбинация Input и CreatedBy в списке.
Я попробовал вышеупомянутый отправленный запрос и ниже запрос согласно предложению:
uData.GroupBy(g=> new {g.CreatedBy,g.Input})
.Where(w=>w.Count() > 1)
Но это возвращает мне весь список вместо дубликата
Обновлено, чтобы добавить пример ссылки:
https://dotnetfiddle.net/HWMYp6
Я создал пример в ссылке выше.
В этом примере я хочу отметить набор с идентификатором 10 с выходом (output5) в качестве дубликата в качестве такой комбинации входных данных, созданной ранее в идентификаторе 1,2,3 (все они принадлежат output1). Таким образом, в основном одна комбинация input и createby не должна повторяться над другим набором. Ссылочный ключ является выходным. Извините, если мой начальный пост был не очень понятен. Я пытался.