c# - Linq 左连接多个表

标签 c# linq

您好,我正在 .net 中开发 Web 应用程序。我遇到过以下情况。

下面是我的第一个表格。

perm_levelid  scrn_id  perm_id  perm_read  perm_write
40               1        2         1         1
41               2        2         1         1
42               3        2         1         1

下面是我的第二个表。

scrn_id   scrn_name   
1         UserProfile
2         Change Password
3         Dashboard
4         Lease request

上面两个表之间的关系是scrn_id

我期望的输出是

scrn_id  perm_id  perm_read  perm_write
1           2           1      1
2           2           1      1
3           2           1      1
4           0           0      0

我想要结果总共 4 行。 scrn_id 1,2,3 在两个表中匹配,因此我应该检索第一个表 perm_read 和 perm_write 值。我也想获得第二张表的剩余值(value)。

我尝试如下。

List<screendetails> obj = new List<screendetails>();
obj = (from c in db.rolsp_perm_levelmapping
       join mapdetails in db.rolsp_scrn_screen on c.scrn_id equals mapdetails.scrn_id
       into mapObj
       from wt in mapObj.DefaultIfEmpty()
       where c.perm_id== permisssionID
       select new screendetails {
            scrn_id=c.scrn_id,
            scrn_name= wt.scrn_name,
            Read=c.perm_read,
            Write=c.perm_write
}).ToList();
return obj;

以上查询未产生正确的结果。我可以在这里得到一些帮助来解决这个问题吗?谢谢

最佳答案

obj= (from scrn in db.rolsp_scrn_screen
  from rmap in db.rolsp_perm_levelmapping
  .Where(rl=>rl.scrn_id==scrn_id).DefaultIfEmpty() select new screendetails {
                        scrn_id=scrn.scrn_id,
                        scrn_name= scrn.scrn_name,
                        Read=rmap.perm_read,
                        Write=rmap.perm_write
            }).ToList();

尝试使用这个...希望这有帮助...

关于c# - Linq 左连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44943839/

相关文章:

c# - 将xml树转换为json树

c# - C# 的 SortedBag<T>

c# - Linq 2 SQL查询优化

c# - Linq 查询中的 If 语句

c# - ASP.NET - LinqDataSource 中的高级 Where 子句

c# - 将 IQueryable 作为参数传递

c# - 尝试使用 C# 从 url 解析 JSON

c# - lambda 表达式中的语句和返回 lambda

c# - LINQ .OrderBy由单个字母然后由另一个字母

c# - 扩展 ContentView 时获取 "The name ' SomeName' does not exist in the current context"