Я работаю в ASP.NET Core.
У меня проблема с запросом строк, которые имеют одинаковые User_id и Definition_id, если они есть, мне нужен идентификатор строки.
+----+---------+---------------+
| Id | User-id | Definition-id |
+----+---------+---------------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| 4 | 3 | 1 |
| 5 | 4 | 1 |
| 6 | 4 | 1 |
| 7 | 5 | 2 |
| 8 | 6 | 1 |
+----+---------+---------------+
Мне нужно запросить таблицу, как эта, чтобы вернуть {5, 6} мне, поскольку они имеют идентичные идентификаторы пользователя И определения.
Я пробовал Groupby для обоих значений, но я не могу получить IQueriable или IGrouping, чтобы дать мне идентификатор конкретной строки.
Я бы предположил, что это так работает, но это не так.
var placementsWithDuplicates =
from p in _context.Placements
group p by new { p.User_id, p.Definition_id } into what
select new
{
Id = what.Id,
User = what.User_id,
Defi = what.Definition_id,
};
foreach (var p in placementsWithDuplicates)
{
issues.Add(new IssueModel()
{
Type = "Praxe ID[" + p.Id + "]",
Name = "User id [" + p.User + "], Definition id [" + p.Defi + "]",
Detail = "So user shouldnt have data for more definitons!"
});
};
Спасибо Satish Hirpara за лучший ответ, потребовалось небольшое обновление, поэтому я выложил сообщение, которое в итоге получилось хорошо:
var B = from p in _context.Placements
group p by new { p.User_id, p.Definition_id } into what
where what.Count() > 1
select new
{
User_id = what.Key.User_id,
Definition_id = what.Key.Definition_id
};
var placementsWithDuplicates = from A in _context.Placements
join b in B on new { A.User_id, A.Definition_id } equals new { b.User_id, b.Definition_id }
select A;