Нахождение значений, характерных для всех элементов

У меня есть набор данных с двумя столбцами следующим образом;

Prod Value
A    1
A    2
A    3
B    2
B    4
C    1
C    2

Таким образом, я хочу все строки, где значение характерно для Напоминания, таким образом, в примере только выше следующего был бы возвращен.

A   2
B   2
C   2 

Или LINQ или sql были бы полезны

Спасибо

5
задан Dub 2 March 2010 в 15:57
поделиться

3 ответа

Вы можете использовать оператор пересечения во втором столбце набора данных.

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
var commonNumbers = numbersA.Intersect(numbersB);

Примеры Linq

1
ответ дан 15 December 2019 в 06:24
поделиться
--    DROP TABLE #t2  UNCOMMENT WHEN TESTING...

CREATE TABLE #t2
(
 Prod varchar(50),
 Value int
)

INSERT INTO #t2 VALUES ('A', 1)
INSERT INTO #t2 VALUES ('A', 2)
INSERT INTO #t2 VALUES ('B', 2)
INSERT INTO #t2 VALUES ('B', 4)
INSERT INTO #t2 VALUES ('C', 2)

SELECT 
    DISTINCT
    p1.Prod, 
    p2.Value 
FROM 
    #t2 p1
INNER JOIN 
    #t2 p2 
ON 
    p2.Value = p1.Value AND p1.Prod <> p2.Prod

Это решение на базе SQL Server :).

1
ответ дан 15 December 2019 в 06:24
поделиться

Вот что я придумал, думаю, есть более простой способ, но;

        var prodList = (from col in list select col["Prod"]).Distinct().ToList();


        var valueList = from col in list
                        group col by col["Value"] into g
                        where g.Count() == prodList.Count()
                        select g.Key;

Это даст мне все значения, которые я ищу

1
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: