0

我很难理解我需要的查询的这个要求。

这是我在表格中的数据:

row1  row2
A     B
A     C
A     D
A     E
E     B
E     C
E     A
E     D

我想要所有行

where row1 IN ('A', 'E')

但我不想要row1 = E 和 row2 = A的行。

我认为在直接 SQL 中,我可以做一个别名表,如SELECT....AS Table1,然后只选择在Table1中找不到row2的行,但我不知道如何在 LINQ 中解决这个问题。

有任何想法吗 ?

编辑:抱歉我的问题含糊不清,但我事先不知道row1 in ('A', 'E')的标准。基本上,如果我在row1中检索到具有特定值的记录( record1 ),如果我在另一条记录(record2 )中的row2中找到相同的特定值,我不想要record2

4

2 回答 2

0

更新后仍然不完全清楚,但我认为这会让你走上正确的轨道:

var rows = new[] {
Tuple.Create("A", "B"),
Tuple.Create("A", "C"),
Tuple.Create("A", "D"),
Tuple.Create("A", "E"),
Tuple.Create("E", "B"),
Tuple.Create("E", "C"),
Tuple.Create("E", "A"),
Tuple.Create("E", "D"),
};
var reference = Tuple.Create("A", "E");

var result = rows.Where(r => (r.Item1 == reference.Item1 || r.Item1 == reference.Item2)
                          && r.Item2 != reference.Item1
                          && r.Item1 != reference.Item2);

更新后,我不确定是否应包括最后一个条件。目前它返回:

Item1 Item2 
A     B 
A     C 
A     D 
A     E 

如果仍然没有达到目标,也许您可​​以显示所需的输出。

于 2013-02-10T20:58:02.223 回答
0

我将假设您要创建一个 PIVOT 查询。

因此,通过您的输入,您希望获得表单的输出

核心价值

A - B,C,D,E

B - B,C,A,D

其中 Key 是字符串类型,Value 是 IEnumerable 类型

在这种情况下,你想要: -

var output = allRows.ToLookup(x => x.row1, x => x.row2);
于 2013-02-11T20:48:07.017 回答