2017-05-04 44 views
0

我已經使用「查詢語法」加入數據表,它工作正常。任何人都可以幫助將它轉換爲lamba語句嗎?如何在C#中使用labda表達式linq內聯數據表?

var oVarLoanDetails = (from data in ActiveReferralDetails.AsEnumerable() 
    join reftypedata in ActionType.AsEnumerable() 
    on data.Field<int>("atid") equals reftypedata.Field<int>("atid") 
    join refsubtypedata in ActionSubType.AsEnumerable() 
    on data.Field<int>("ASTID") equals refsubtypedata.Field<int>("ASTID") 
    where reftypedata.Field<int>("atid") == refsubtypedata.Field<int>("atid") 
    select new LoanDataInfo 
      { 
      LoanNumber = data.Field<string>("Loanno").ToLower(), 
      ATID = reftypedata.Field<int>("atid"), 
      RefType = reftypedata.Field<string>("ATSHORTDESC"), 
      RefSubType = refsubtypedata.Field<string>("SUBTYPESHORTDESC") 
      }); 
     //Class LoanDataInfo 

     public class LoanDataInfo 
      { 
       public string LoanNumber { get; set; } 
       public int ATID { get; set; } 
       public string RefType { get; set; } 
       public string RefSubType { get; set; } 
      } 
+0

爲什麼你想這樣做?在連接中使用方法語法非常難看,我從不記得我要傳遞什麼,難怪你需要問。你總是可以混合兩種語法來避免它。 –

+0

是的,即使我同意lamda加入是醜陋的。我只想嘗試在數據表中寫入lamda連接.... –

+0

theres沒有任何好處 –

回答

0

編輯:

參考Queryable.Join Method (IQueryable, IEnumerable, Expression>, Expression>, Expression>)

查詢的lambda版本可能是這樣的。

請注意,對於某些屬性,我只是假設它來自ActiveReferralDetails。

var oVarLoanDetails = ActiveReferralDetails.AsEnumerable() 
    .Join(ActionType.AsEnumerable(), 
    ard => arc.Field<int>("atid"), 
    at => at.Field<int>("atid"), 
    (ard, at) => new { ARD = ard, AT = at }) 
    .Join(ActionSubType.AsEnumerable(), 
    r => new { astid = r.ARD.Field<int>("ASTID"), 
    atid = r.ARD.Field<int>("atid") }, 
    ast => new { astid = ast.Field<int>("ASTID"), 
    atid = ast.Field<int>("atid") }, 
    (r, ast) => new { ARD = r.ARD, AT = r.AT, AST = ast}) 
    .Select(r => new LoanDataInfo() { 
     LoanNumber = r.ARD.Field<string>("Loanno").ToLower(), 
     ATID = r.ARD.Field<int>("atid"), 
     RefType = r.ARD.Field<string>("ATSHORTDESC"), 
     RefSubType = r.ARD.Field<string>("SUBTYPESHORTDESC") 
    }); 

Lambda連接是醜陋的。我不會推薦使用它。

+0

我希望你已經考慮過「ActiveReferralDetails」作爲一個類,但它是一個數據表。 –

+0

@DineshRamaian只是相應地應用更改。 –