2014-04-01 27 views
4

我試圖寫在Lambda表達式如下的LINQ(查詢方式),這樣我可以鏈接,使我的代碼更緊湊:內加入了使用lambda(LINQ)

var result = from p1 in defaults 
      join p2 in get on p1.PermissionName equals p2.PermissionName 
      into joined 
      select new 
      { 
       PermissionName = p1.PermissionName, 
       Permission = joined.Select(e => e.Permission == null ? false : true) 
            .SingleOrDefault() 
      }; 

我只能走這麼遠:

var result = defaults.Join(get, defaultKey => 
          defaultKey.PermissionName, getKey => 
          getKey.PermissionName, (a, b) => new 
          { 
           PermissionName = a.PermissionName, 
           Permission = b.Permission 
          }); 

正如你可以看到Join()擴展方法不提供一種方式來獲得joined集合。 我也在網上搜索,但找不到任何線索。請隨時提出建議。

+8

您正在使用'join ... into',它表示爲'GroupJoin',而不是'Join'。 –

回答

2

使用GroupJoin

var result = 
    defaults.GroupJoin(
     get, 
     p1 => p1.PermissionName, 
     p2 => p2.PermissionName, 
     (p1, joined) => 
      new 
      { 
       PermissionName = p1.PermissionName, 
       Permission = joined.Select(e => e.Permission != null) 
            .SingleOrDefault() 
      });