如何使用linq从mvc c#中检索多对多关系中的数据

时间:2016-03-10 05:56:14

标签: c# asp.net-mvc linq

我有一个c#mvc项目,其中包含搜索过滤器表单。表table_a和table_c也有2个表多对多关系。 我想在table_c中获取value_table_c linq mvc

table_a
------------
id_table_a
desc_table_a
-------------

table_b
------------
id_table_b
desc_table_b
------------

table_c
------------
id_table_a
id_table_b
value_table_c
-------------

SELECT 
    table_c.value_table_c
FROM table_c
JOIN table_a ON table_a.id_table_a = table_c.id_table_a
JOIN table_b ON table_b.id_table_b = table_c.id_table_b
WHERE table_a.id_table_a=1;

有人有什么想法吗?

2 个答案:

答案 0 :(得分:2)

SELECT 
    table_c.value_table_c
FROM table_c
JOIN table_a ON table_a.id_table_a = table_c.id_table_a
JOIN table_b ON table_b.id_table_b = table_c.id_table_b
WHERE table_a.id_table_a=1;

到linq

var res = (from c in context.table_c
           join a in context.table_a on c.id_table_a = a.id_table_a 
           join b in context.table_b on c.id_table_b = b.id_table_b
           where a.id_table_a = 1
           select new 
           {
               c.value_table_c
           })

通常你会将“选择新”改为已知类型。

但这就是你如何做你的SQL的内连接linq版本

答案 1 :(得分:0)

在下面的代码中我正在考虑' db'是实体数据库上下文的对象名称。

db.table_c.where(c=>c.table_a != null && c.table_a.id_table_a = 1).select(c=>c.value_table_c)

我不确定你为什么要加入' table_b'因为您没有应用任何过滤器而您没有从中选择任何值。但是如果提到的sql查询是你的要求那么这个linq查询将帮助你,我也假设tablea和b都有引用键。