Существует довольно много путей. Примите A, и B является IEnumerable.
!A.Except(B).Any() && !B.Except(A).Any()
A.Count() == B.Count() && A.Intersect(B).Count() == B.Count()
etc
Вы должны поместить все столбцы SELECT
в GROUP BY
или использовать для них функции, которые сжимают результаты до одного значения (например, MIN
, MAX
или SUM
).
Простой пример, чтобы понять, почему это происходит: представьте, что у вас есть такая база данных:
FOO BAR
0 A
0 B
, и вы запускаете ВЫБРАТЬ * ИЗ таблицы GROUP BY foo
. Это означает, что база данных должна возвращать одну строку в качестве результата с первым столбцом 0
для выполнения GROUP BY
, но теперь есть два значения bar
для выбора. . Какого результата вы ожидаете - A
или B
? Или база данных должна возвращать более одной строки, нарушая контракт GROUP BY
?
Включить в предложение GROUP BY
все выражения SELECT
, которые не являются аргументами групповой функции.