C# C linq选择一些实体

C# C linq选择一些实体,c#,linq,C#,Linq,我有一个答案实体列表,列表大小为50-2000项-实体的属性比这里显示的要多得多 我想要一个linq查询来为那些还没有得到正确答案的人选择所有的实体 因此,我的实体输出列表将从下表中排除fred和harry的所有实体,因为它们都有一个正确的答案,并且包括bob和bill的答案的所有实体。我必须选择isCorrect,而不是答案本身,因为答案在呈现给用户时会被置乱,我需要完整的实体作为嗯 - username | answer | isCorrect | ..... - fred | a

我有一个答案实体列表,列表大小为50-2000项-实体的属性比这里显示的要多得多 我想要一个linq查询来为那些还没有得到正确答案的人选择所有的实体 因此,我的实体输出列表将从下表中排除fred和harry的所有实体,因为它们都有一个正确的答案,并且包括bob和bill的答案的所有实体。我必须选择isCorrect,而不是答案本身,因为答案在呈现给用户时会被置乱,我需要完整的实体作为嗯

- username | answer | isCorrect | .....
- fred     |  a     | false            exclude as he has 1 correct
- fred     |  d     | false            exclude as he has 1 correct
- fred     |  b     | false            exclude as he has 1 correct     
- fred     |  a     | true             exclude as he has 1 correct
+ bob      |  a     | false          need this entity
+ bob      |  b     | false          need this entity
+ bill     |  a     | false          need this entity    
+ bill     |  b     | false          need this entity   
- harry    |  a     | false            exclude as he has 1 correct   
- harry    |  b     | true             exclude as he has 1 correct     
- harry    |  c     | false            exclude as he has 1 correct     
我可以得到一个没有正确答案的用户列表

var usersWithNoCorrectAnswers = entities
  .GroupBy(a => a.UserName)
  .Where(g => g.Any(x => !x.IsCorrect))
  .Select(g => g.Key)
  .ToList();
但我不知道如何得到没有正确答案的实体列表
感谢

要获取所有答案错误的用户的所有实体,您可以根据用户名分组并筛选出正确答案的用户。然后只需为组选择实体并展平结果

var results = entities.GroupBy(a => a.UserName(
    .Where(g => !g.Any(a => a.IsCorrect))
    .SelectMany(g => g)
    .ToList();

要获得所有答案都错误的用户的所有实体,您可以根据用户名分组并筛选出所有正确答案的用户。然后只需为组选择实体并展平结果

var results = entities.GroupBy(a => a.UserName(
    .Where(g => !g.Any(a => a.IsCorrect))
    .SelectMany(g => g)
    .ToList();

我想你需要这样的东西:

var results = entities.GroupBy(a => a.UserName(
    .Where(g => !g.Any(a => a.IsCorrect))
    .SelectMany(g => g.Select(a => 
          new {
               username = a.username,
               answer = a.answer,
               ...
          }
     ))
    .Distinct()
    .ToList();


我想你需要这样的东西:

var results = entities.GroupBy(a => a.UserName(
    .Where(g => !g.Any(a => a.IsCorrect))
    .SelectMany(g => g.Select(a => 
          new {
               username = a.username,
               answer = a.answer,
               ...
          }
     ))
    .Distinct()
    .ToList();

但我不知道如何得到没有正确答案的实体列表

但我不知道如何得到没有正确答案的实体列表


我已经重新编辑,以使它更清楚,我需要所有的实体和完整的实体,而不仅仅是答案,thanks@user2153050好的,如果我理解您对问题的更改,我已经更新了我的答案,以获取实体,而不仅仅是答案。这起作用了,我注意到其中任何一项工作。其中g=>!g、 Anya=>a.IsCorrect,其中g=>g.Anya=>!a、 IsCorrect@user2153050实际上应该是g=>!g、 Anya=>a.IsCorrect或g=>g.Alla=>!a、 IsCorrect一个不是至少一个正确的用户,另一个是所有用户都不正确。是的,今天进一步的实验揭示了你在这里所说的,谢谢。我已经重新编辑,以使它更清楚我需要所有的实体和完整的实体,而不仅仅是答案, thanks@user2153050好的,如果我理解您对问题的更改,我已经更新了我的答案,以获取实体,而不仅仅是答案。这起作用了,我注意到其中任何一项工作。其中g=>!g、 Anya=>a.IsCorrect,其中g=>g.Anya=>!a、 IsCorrect@user2153050实际上应该是g=>!g、 Anya=>a.IsCorrect或g=>g.Alla=>!a、 IsCorrect一个不是至少有一个正确的用户,另一个是所有用户都不正确。是的,今天的进一步实验揭示了您在这里所说的,谢谢