C # Linq Encontre duplicatas com vários grupos por
Tenho uma lista em c # como:
List<Data> uData = new List<uData>();
Onde o uData é preenchido na interface do usuário como:
{
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"
}
O que eu quero fazer é pesquisar esta lista na tecla "Saída" e descobrir se há duplicatas no valor da combinação correspondente de "Entrada" e a tecla CreatedB
Por exemplo, na minha lista de exemplos acima, tenho três saídas: Saída1, Saída2, Saída3. Agora, para listas com a chave do valor de Saída como "Saída1" e "Saída3", o valor da chave "Entrada" e "CreatedBy" correspondente é duplicado aqui. O valor é "7,8" e "swallac" como valor combinado. É isso que quero destacar
Para isso, tentei a consulta abaixo:
var myList = uData.GroupBy(l => l.Ouput)
.SelectMany(g => g.GroupBy(x => (x.Input, x.CreatedBy)).Where(x => x.Count() > 1))
.SelectMany(x => x);
Isto não me dá nenhum erro, mas não me dá o resultado desejado, pois lista todos os dados. O que estou perdendo aqui
--Atualizada--
Antes eu queria que a entrada não fosse repetida em uma saída por causa da qual eu tinha a consulta abaix
uData.GroupBy(l => l.Ouput)
.Any(g => g.GroupBy(x => x.Input).Any(x => x.Count() > 1))
gora, quero outra consulta para verificar se a combinação de Input e CreatedBy é repetida na list
Eu tentei a consulta postada acima e a consulta abaixo conforme a sugestão:
uData.GroupBy(g=> new {g.CreatedBy,g.Input})
.Where(w=>w.Count() > 1)
Mas isso retorna toda a lista em vez da duplicada
Atualizado para adicionar um link de exemplo:
https: //dotnetfiddle.net/HWMYp
Criei o exemplo no link acima.
No exemplo, quero marcar o conjunto com o id 10 com output (output5) como o duplicado, já que essa combinação de entrada e criada por já existia anteriormente no id 1,2,3 (todos pertencentes à output1). Portanto, basicamente, uma combinação de entrada e createby não deve ser repetida em outro conjunto. A chave de referência sendo Saída. Desculpe se minha postagem inicial não foi muito clara. Eu tentei