C# 如何在C中使用labda表达式linq内部连接数据表?

C# 如何在C中使用labda表达式linq内部连接数据表?,c#,linq,linq-to-dataset,C#,Linq,Linq To Dataset,我使用查询语法连接了数据表,它工作得很好。有人能帮我把它转换成lamba语句吗 var oVarLoanDetails = (from data in ActiveReferralDetails.AsEnumerable() join reftypedata in ActionType.AsEnumerable() on data.Field<int>("atid") equals reftypedata.Field<int>("atid") j

我使用查询语法连接了数据表,它工作得很好。有人能帮我把它转换成lamba语句吗

 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; }
            }
编辑:

参考

查询的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连接是丑陋的。我不建议您使用它。

您为什么要这样做?在连接中使用方法语法是如此难看,我从来都不记得我必须传递什么,难怪你需要问。你总是可以混合使用这两种语法来避免它。是的,即使我也同意lamda连接是丑陋的。我只是想尝试在数据表中编写lamda联接……没有任何好处检查此标题可能对您有所帮助我希望您将ActiveReferralDetails视为一个类,但它是一个数据表。@DineshRamaian只需相应地应用更改即可。