2017-05-04 3 views
0

私は "クエリ構文"を使用してデータテーブルに参加しました。そして、それはうまくいきました。それをlambaステートメントに変換するのに助けてください。C#でlabda式linqを使用してDataTablesを内部結合する方法は?

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

ええ、私はラムダのジョインが醜いことに同意します。私はちょうどデータテーブルにラムダジョインを書くことを試みたいと思う。 –

+0

theresの利点なし –

答えて

0

EDIT:

Queryable.Join Method (IQueryable, IEnumerable, Expression>, Expression>, Expression>)を参照してください。

クエリのラムダバージョンは、次のようなものです。

一部のプロパティでは、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") 
    }); 

ラムダ結合は醜いです。私はそれを使用することをお勧めしません。

+0

私はあなたがクラスとして "ActiveReferralDetails"を考慮していたが、そのデータ可能性があることを願っています。 –

+0

@DineshRamaianはそれに応じて変更を適用するだけです。 –

関連する問題