-1

我有一个类似于键值对设计结构的表。我想根据键和值查询表,但我遇到了一些问题。下面是我的表结构和预期输出。

表格1:

ID 键值

1   NAME        abc
2   AGE         12
3   DEPARTMENT  CCB
4   NAME        xyz
5   AGE         13
6   DEPARTMENT  TSS
7   NAME        cde
8   AGE         12
9   DEPARTMENT  TMS
Table 2:

KeyId KeyName
1      Name
2      Department
3      Age

为了便于理解,我直接输入了表1中的键名,实际上表1和表2之间存在外键关系。

表 2 也可以包含任何作为 KeyName 的内容,不一定是 Name、Department 和 Age。

预期输出是:我需要获取名称包含 %c% 且年龄 = 12 的数据。

     Name Age Department
     abc  12  CCB
     cde  12  TMS 

注意:我正在寻找 EF 解决方案,即 linq 查询,而不是 sql 查询。

我试过的选项,下面是查询:

变量温度 = (from c in table1 where c.Name.Contains("C") || C.Age == 12 Select new { C.Name, C.Age })

考虑应用“OR”条件以便满足两个条件,然后在从数据库中获取数据后在内存中使用“AND”进行过滤。但我没能成功。

4

1 回答 1

0

尝试这个:

var result = input.Select((x,i)=>new {x,i})
                  .GroupBy(a=>a.i/3)
                  .Where(g=>g.FirstOrDefault().x.Value.Contains("c") &&
                            Convert.ToInt32(g.Skip(1).FirstOrDefault().x.Value) == 12)
                  .Select(g=> new {
                             Name = g.FirstOrDefault().x.Value,
                             Age = Convert.ToInt32(g.Skip(1).FirstOrDefault().x.Value),
                             Department = g.Skip(2).FirstOrDefault().x.Value
                          });

不确定它是否有效,EF但看起来是否有效,您必须在客户端执行查询,AsEnumerable()然后在input.

于 2013-10-23T13:56:56.137 回答