2013-01-20 220 views
1

這是我的LINQ查詢,請幫我在改變這個LINQ查詢使用Lambda表達式查詢:在查詢語法轉換的LINQ to lambda語法

var query = from d in db.customers 
      from s in db.tbl_states 
      where d.cust_state == s.state_id 
      select new 
      { 
       d.cust_name, 
       s.state_name 
      }; 
+1

你要使用'內join',但你有沒有外鍵關聯的一個表 – spajce

回答

2

試試這個:

var query = 
    db.customers.Join (   
     db.tbl_states,   
     d => d.cust_state,  
     s => s.state_id, 
     (d, s) => new { d.cust_name, s.state_name } 
    ); 
+0

得到一個錯誤:「類型參數的方法「系統。 Linq.Queryable.Join (System.Linq.IQueryable ,System.Collections.Generic.IEnumerable ,System.Linq.Expressions.Expression >,System.Linq.Expressions .Expression >,System.Linq.Expressions.Expression >)'不能從u智者。嘗試明確指定類型參數「 – user1993853

+0

@ user1993853這應該正常工作,請確保查詢本身正常工作。您從哪裏得到此異常? –

2

這應該做到這一點:

var query = db.customers.Join(db.tbl_states, d => d.cust_state, s => s.state_id, (d, s) => new { d.cust_name, s.state_name }); 
+0

獲取錯誤: - 」方法的類型參數System.Linq.Queryable .Init (System.Linq.IQueryable ,System.Collections.Generic.IEnumerable ,System.Linq.Expressions.Expression >,System.Linq.Expressions.Expression < System.Func >,System.Linq.Expressions.Expression >)'不能根據用法推斷。嘗試明確地指定類型參數。「 – user1993853

+0

cust_state和state_id是否是相同的類型?如果不是它們需要的,你的原始查詢也不會有效。 –

2

我猜你linq它應該是這樣的

var query = from d in db.customers 
      join s in db.tbl_states on d.cust_state equals s.state_id 
      select new 
      { 
       d.cust_name, 
       s.state_name 
      }; 

Lambda

var list = db.customers      
.Join(db.tbl_states, 
     s => s.tbl_states, 
     d => d.state_id, 
     (s, d) => new                       
       { 
        d.cust_name, 
        s.state_name 
       });