两表联查
//多表查询示例
//1、单条件Join
var bomsetver = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => a.Factory,//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY”
b => b.Factory,//外键表主键
(a, b) => a//查询结果:显示主表的所有字段
);
//2、多条件Join
var bomsetver2 = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a,b)=>new {a,b }//查询结果:显示主表的所有字段和外键表所有字段
);
//3、多条件Join,返回部分字段
var bomsetver3 = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new
{
AID = a.BomSetId,//主表字段,赋别名
a.BomSetDesc,//主表字段
BID = b.BomSetId,//外键表字段,赋别名
b.BomSetVersion//外键表字段
});
//4、TableA Left Join TableB
var bomsetver4 = ctx.Bomset
.GroupJoin(
ctx.Bomsetver,
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new { AA=a, BB=b })
.SelectMany(
ab => ab.BB.DefaultIfEmpty(),//Left Join
(a,b) => new
{
AID = a.AA.BomSetId,//主表字段,赋别名
a.AA.BomSetDesc,//主表字段
BID = b.BomSetId,//外键表字段,赋别名
b.BomSetVersion//外键表字段
}).ToList();
//5、TableA Right Join TableB
//即TableB Left Join TableA
三表联查:
//多表查询示例
//1、单条件Join
var bomsetver = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => a.Factory,//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY”
b => b.Factory,//外键表主键
(a, b) => a//查询结果:显示主表的所有字段
);
//2、多条件Join
var bomsetver2 = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a,b)=>new {a,b }//查询结果:显示主表的所有字段和外键表所有字段
);
//3、多条件Join,返回部分字段
var bomsetver3 = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new
{
AID = a.BomSetId,//主表字段,赋别名
a.BomSetDesc,//主表字段
BID = b.BomSetId,//外键表字段,赋别名
b.BomSetVersion//外键表字段
});
//4、TableA Left Join TableB
var bomsetver4 = ctx.Bomset
.GroupJoin(
ctx.Bomsetver,
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new { AA=a, BB=b })
.SelectMany(
ab => ab.BB.DefaultIfEmpty(),//Left Join
(a,b) => new
{
AID = a.AA.BomSetId,//主表字段,赋别名
a.AA.BomSetDesc,//主表字段
BID = b.BomSetId,//外键表字段,赋别名
b.BomSetVersion//外键表字段
}).ToList();
//5、TableA Right Join TableB
//即TableB Left Join TableA
//6、三表及更多表Join
var bomsetver6 = ctx.Bomset//主表
.Join(
ctx.Bomsetver,//外键表一
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new{ a, b })
.Join(
ctx.Bomsetmtl,//外键表二
a => new { f = a.a.Factory, id = a.a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new
{
AID = a.a.BomSetId,//主表字段,赋别名
a.a.BomSetDesc,//主表字段
BID = a.b.BomSetId,//外键表字段,赋别名
a.b.BomSetVersion,//外键表字段
b.PartGrp
}).ToList();
//7、三表及多表Left Join
var bomsetver7 = ctx.Bomset
.GroupJoin(
ctx.Bomsetver,
a => new { f = a.Factory, id = a.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new { A1 = a, B1 = b })
.SelectMany(
ab => ab.B1.DefaultIfEmpty(),//Left Join
(a, b) => new { A2=a, B2=b })
.GroupJoin(
ctx.Bomsetmtl,
a => new { f = a.A2.A1.Factory, id = a.A2.A1.BomSetId },//主表外键,对应SQL语句“WHERE A.FACTORY=B.FACTORY AND A.BOMSETID=B.BOMSETID”
b => new { f = b.Factory, id = b.BomSetId },//外键表主键
(a, b) => new { A3 = a, B3 = b }
)
.SelectMany(
ab => ab.B3.DefaultIfEmpty(),//Left Join
(a, b) => new
{
AID = a.A3.A2.A1.BomSetId,//主表字段,赋别名
a.A3.A2.A1.BomSetDesc,//主表字段
BID = a.A3.B2.BomSetId,//外键表字段,赋别名
a.A3.B2.BomSetVersion,//外键表字段
b.PartGrp
}).ToList();
查询条件拼接:
var query = ctx.Almmsghis.Where(t => t.TranTime.CompareTo(sFromTime) >= 0 && t.TranTime.CompareTo(sToTime) <= 0);
if (sTranTime.Trim() != "")
{
query = query.Where(t => t.TranTime.CompareTo(sTranTime) <= 0);
}
if (sClearFlag.Trim() == "Y")
{
query = query.Where(t => t.ClearFlag.CompareTo(sClearFlag) == 0);
}
else if (sClearFlag.Trim() == "N")
{
query = query.Where(t => t.ClearFlag.CompareTo(" ") == 0);
}
if (sAlarmId.Trim() != "")
{
query = query.Where(t => t.ClearFlag.CompareTo(sAlarmId) == 0);
}
if (sAlarmType.Trim() != " ")
{
query = query.Where(t => t.ClearFlag.CompareTo(sAlarmType) == 0);
}
if (sLotId.Trim() != "")
{
query = query.Where(t => t.ClearFlag.CompareTo(sLotId) == 0);
}
if (sResId.Trim() != "")
{
query = query.Where(t => t.ClearFlag.CompareTo(sResId) == 0);
}
listAlmmsghis = query.OrderByDescending(t => t.TranTime).ToList();
数组list的定义:
POPCoreType.POP_Update_Image_In_Tag_item_list[] item_list = new POPCoreType.POP_Update_Image_In_Tag_item_list[]
{
new POPCoreType.POP_Update_Image_In_Tag_item_list()
{
seq_num=1,
image_data="1"
},
new POPCoreType.POP_Update_Image_In_Tag_item_list()
{
seq_num=2,
image_data="1"
},
};
三表查询实例(SQL to Linq):
strQuery = "SELECT FD.FUNC_NAME,"
+ " FD.FUNC_DESC,"
+ " FD.FUNC_TYPE_FLAG,"
+ " FD.CTL_NAME_1,"
+ " FD.CTL_NAME_2,"
+ " FD.CTL_NAME_3,"
+ " FD.CTL_NAME_4,"
+ " FD.CTL_NAME_5,"
+ " FD.CTL_NAME_6,"
+ " FD.CTL_NAME_7,"
+ " FD.CTL_NAME_8,"
+ " FD.CTL_NAME_9,"
+ " FD.CTL_NAME_10,"
+ " FD.CTL_NAME_11,"
+ " FD.CTL_NAME_12,"
+ " FD.CTL_NAME_13,"
+ " FD.CTL_NAME_14,"
+ " FD.CTL_NAME_15,"
+ " FD.CTL_NAME_16,"
+ " FD.CTL_NAME_17,"
+ " FD.CTL_NAME_18,"
+ " FD.CTL_NAME_19,"
+ " FD.CTL_NAME_20,"
+ " FD.CTL_NAME_21,"
+ " FD.CTL_NAME_22,"
+ " FD.CTL_NAME_23,"
+ " FD.CTL_NAME_24,"
+ " FD.CTL_NAME_25,"
+ " FD.TAB_NAME_1,"
+ " FD.TAB_NAME_2,"
+ " FD.TAB_NAME_3,"
+ " FD.TAB_NAME_4,"
+ " FD.TAB_NAME_5,"
+ " FD.TAB_NAME_6,"
+ " FD.TAB_NAME_7,"
+ " FD.TAB_NAME_8,"
+ " FD.TAB_NAME_9,"
+ " FD.TAB_NAME_10,"
+ " FD.TAB_NAME_11,"
+ " FD.TAB_NAME_12,"
+ " FD.TAB_NAME_13,"
+ " FD.TAB_NAME_14,"
+ " FD.TAB_NAME_15,"
+ " FD.TAB_NAME_16,"
+ " FD.TAB_NAME_17,"
+ " FD.TAB_NAME_18,"
+ " FD.TAB_NAME_19,"
+ " FD.TAB_NAME_20,"
+ " FD.TAB_NAME_21,"
+ " FD.TAB_NAME_22,"
+ " FD.TAB_NAME_23,"
+ " FD.TAB_NAME_24,"
+ " FD.TAB_NAME_25,"
+ " FD.OPT_NAME_1,"
+ " FD.OPT_NAME_2,"
+ " FD.OPT_NAME_3,"
+ " FD.OPT_NAME_4,"
+ " FD.OPT_NAME_5,"
+ " FD.OPT_NAME_6,"
+ " FD.OPT_NAME_7,"
+ " FD.OPT_NAME_8,"
+ " FD.OPT_NAME_9,"
+ " FD.OPT_NAME_10,"
+ " FD.OPT_NAME_11,"
+ " FD.OPT_NAME_12,"
+ " FD.OPT_NAME_13,"
+ " FD.OPT_NAME_14,"
+ " FD.OPT_NAME_15,"
+ " FD.OPT_NAME_16,"
+ " FD.OPT_NAME_17,"
+ " FD.OPT_NAME_18,"
+ " FD.OPT_NAME_19,"
+ " FD.OPT_NAME_20,"
+ " FD.OPT_NAME_21,"
+ " FD.OPT_NAME_22,"
+ " FD.OPT_NAME_23,"
+ " FD.OPT_NAME_24,"
+ " FD.OPT_NAME_25,"
+ " FD.FLD_EN_MASK_USE_FLAG,"
+ " FD.HELP_URL,"
+ " GF.CTL_EN_FLAG_1,"
+ " GF.CTL_EN_FLAG_2,"
+ " GF.CTL_EN_FLAG_3,"
+ " GF.CTL_EN_FLAG_4,"
+ " GF.CTL_EN_FLAG_5,"
+ " GF.CTL_EN_FLAG_6,"
+ " GF.CTL_EN_FLAG_7,"
+ " GF.CTL_EN_FLAG_8,"
+ " GF.CTL_EN_FLAG_9,"
+ " GF.CTL_EN_FLAG_10,"
+ " GF.CTL_EN_FLAG_11,"
+ " GF.CTL_EN_FLAG_12,"
+ " GF.CTL_EN_FLAG_13,"
+ " GF.CTL_EN_FLAG_14,"
+ " GF.CTL_EN_FLAG_15,"
+ " GF.CTL_EN_FLAG_16,"
+ " GF.CTL_EN_FLAG_17,"
+ " GF.CTL_EN_FLAG_18,"
+ " GF.CTL_EN_FLAG_19,"
+ " GF.CTL_EN_FLAG_20,"
+ " GF.CTL_EN_FLAG_21,"
+ " GF.CTL_EN_FLAG_22,"
+ " GF.CTL_EN_FLAG_23,"
+ " GF.CTL_EN_FLAG_24,"
+ " GF.CTL_EN_FLAG_25,"
+ " GF.TAB_DS_FLAG_1,"
+ " GF.TAB_DS_FLAG_2,"
+ " GF.TAB_DS_FLAG_3,"
+ " GF.TAB_DS_FLAG_4,"
+ " GF.TAB_DS_FLAG_5,"
+ " GF.TAB_DS_FLAG_6,"
+ " GF.TAB_DS_FLAG_7,"
+ " GF.TAB_DS_FLAG_8,"
+ " GF.TAB_DS_FLAG_9,"
+ " GF.TAB_DS_FLAG_10,"
+ " GF.TAB_DS_FLAG_11,"
+ " GF.TAB_DS_FLAG_12,"
+ " GF.TAB_DS_FLAG_13,"
+ " GF.TAB_DS_FLAG_14,"
+ " GF.TAB_DS_FLAG_15,"
+ " GF.TAB_DS_FLAG_16,"
+ " GF.TAB_DS_FLAG_17,"
+ " GF.TAB_DS_FLAG_18,"
+ " GF.TAB_DS_FLAG_19,"
+ " GF.TAB_DS_FLAG_20,"
+ " GF.TAB_DS_FLAG_21,"
+ " GF.TAB_DS_FLAG_22,"
+ " GF.TAB_DS_FLAG_23,"
+ " GF.TAB_DS_FLAG_24,"
+ " GF.TAB_DS_FLAG_25,"
+ " GF.OPT_VALUE_1,"
+ " GF.OPT_VALUE_2,"
+ " GF.OPT_VALUE_3,"
+ " GF.OPT_VALUE_4,"
+ " GF.OPT_VALUE_5,"
+ " GF.OPT_VALUE_6,"
+ " GF.OPT_VALUE_7,"
+ " GF.OPT_VALUE_8,"
+ " GF.OPT_VALUE_9,"
+ " GF.OPT_VALUE_10,"
+ " GF.OPT_VALUE_11,"
+ " GF.OPT_VALUE_12,"
+ " GF.OPT_VALUE_13,"
+ " GF.OPT_VALUE_14,"
+ " GF.OPT_VALUE_15,"
+ " GF.OPT_VALUE_16,"
+ " GF.OPT_VALUE_17,"
+ " GF.OPT_VALUE_18,"
+ " GF.OPT_VALUE_19,"
+ " GF.OPT_VALUE_20,"
+ " GF.OPT_VALUE_21,"
+ " GF.OPT_VALUE_22,"
+ " GF.OPT_VALUE_23,"
+ " GF.OPT_VALUE_24,"
+ " GF.OPT_VALUE_25,"
+ " GF.FLD_EN_ALL_FLAG,"
+ " GF.FLD_EN_MASK"
+ " FROM SECFUNCTION FD, SECGRPFUNCREL GF, SECUSER UD WHERE"
+ " UD.FACTORY = ? AND"
+ " UD.USER_ID = ? AND"
+ " GF.FACTORY = UD.FACTORY AND"
+ " GF.SEC_GRP_ID = UD.SEC_GRP_ID AND"
+ " FD.FUNC_NAME >= ? AND"
+ " FD.FUNC_NAME = GF.FUNC_NAME";
Linq:
var strQery = ctx.Secfunction.Where(t => t.FuncName.CompareTo(sFuncName) >= 0).GroupJoin(
ctx.Secgrpfuncrel,
(Secfunction a) => new { f = a.FuncName },
(Secgrpfuncrel b) => new { f = b.FuncName },
(a, b) => new
{
A1 = a,
B1 = b
})
.SelectMany(
ab => ab.B1.DefaultIfEmpty(),
(a, b) => new
{
a.A1.FuncName,
a.A1.FuncDesc,
a.A1.FuncTypeFlag,
a.A1.CtlName1,
a.A1.CtlName2,
a.A1.CtlName3,
a.A1.CtlName4,
a.A1.CtlName5,
a.A1.CtlName6,
a.A1.CtlName7,
a.A1.CtlName8,
a.A1.CtlName9,
a.A1.CtlName10,
a.A1.CtlName11,
a.A1.CtlName12,
a.A1.CtlName13,
a.A1.CtlName14,
a.A1.CtlName15,
a.A1.CtlName16,
a.A1.CtlName17,
a.A1.CtlName18,
a.A1.CtlName19,
a.A1.CtlName20,
a.A1.CtlName21,
a.A1.CtlName22,
a.A1.CtlName23,
a.A1.CtlName24,
a.A1.CtlName25,
a.A1.TabName1,
a.A1.TabName2,
a.A1.TabName3,
a.A1.TabName4,
a.A1.TabName5,
a.A1.TabName6,
a.A1.TabName7,
a.A1.TabName8,
a.A1.TabName9,
a.A1.TabName10,
a.A1.TabName11,
a.A1.TabName12,
a.A1.TabName13,
a.A1.TabName14,
a.A1.TabName15,
a.A1.TabName16,
a.A1.TabName17,
a.A1.TabName18,
a.A1.TabName19,
a.A1.TabName20,
a.A1.TabName21,
a.A1.TabName22,
a.A1.TabName23,
a.A1.TabName24,
a.A1.TabName25,
a.A1.OptName1,
a.A1.OptName2,
a.A1.OptName3,
a.A1.OptName4,
a.A1.OptName5,
a.A1.OptName6,
a.A1.OptName7,
a.A1.OptName8,
a.A1.OptName9,
a.A1.OptName10,
a.A1.OptName11,
a.A1.OptName12,
a.A1.OptName13,
a.A1.OptName14,
a.A1.OptName15,
a.A1.OptName16,
a.A1.OptName17,
a.A1.OptName18,
a.A1.OptName19,
a.A1.OptName20,
a.A1.OptName21,
a.A1.OptName22,
a.A1.OptName23,
a.A1.OptName24,
a.A1.OptName25,
a.A1.FldEnMaskUseFlag,
a.A1.HelpUrl,
b.CtlEnFlag1,
b.CtlEnFlag2,
b.CtlEnFlag3,
b.CtlEnFlag4,
b.CtlEnFlag5,
b.CtlEnFlag6,
b.CtlEnFlag7,
b.CtlEnFlag8,
b.CtlEnFlag9,
b.CtlEnFlag10,
b.CtlEnFlag11,
b.CtlEnFlag12,
b.CtlEnFlag13,
b.CtlEnFlag14,
b.CtlEnFlag15,
b.CtlEnFlag16,
b.CtlEnFlag17,
b.CtlEnFlag18,
b.CtlEnFlag19,
b.CtlEnFlag20,
b.CtlEnFlag21,
b.CtlEnFlag22,
b.CtlEnFlag23,
b.CtlEnFlag24,
b.CtlEnFlag25,
b.TabDsFlag1,
b.TabDsFlag2,
b.TabDsFlag3,
b.TabDsFlag4,
b.TabDsFlag5,
b.TabDsFlag6,
b.TabDsFlag7,
b.TabDsFlag8,
b.TabDsFlag9,
b.TabDsFlag10,
b.TabDsFlag11,
b.TabDsFlag12,
b.TabDsFlag13,
b.TabDsFlag14,
b.TabDsFlag15,
b.TabDsFlag16,
b.TabDsFlag17,
b.TabDsFlag18,
b.TabDsFlag19,
b.TabDsFlag20,
b.TabDsFlag21,
b.TabDsFlag22,
b.TabDsFlag23,
b.TabDsFlag24,
b.TabDsFlag25,
b.OptValue1,
b.OptValue2,
b.OptValue3,
b.OptValue4,
b.OptValue5,
b.OptValue6,
b.OptValue7,
b.OptValue8,
b.OptValue9,
b.OptValue10,
b.OptValue11,
b.OptValue12,
b.OptValue13,
b.OptValue14,
b.OptValue15,
b.OptValue16,
b.OptValue17,
b.OptValue18,
b.OptValue19,
b.OptValue20,
b.OptValue21,
b.OptValue22,
b.OptValue23,
b.OptValue24,
b.OptValue25,
b.FldEnAllFlag,
b.FldEnMask,
b.Factory,
b.SecGrpId
}).GroupJoin(
ctx.Secuser,
a => new { f = a.Factory, id = a.SecGrpId },
b => new { f = b.Factory, id = b.SecGrpId },
(a, b) => new { A3 = a , B3 = b }
)
.SelectMany(
ab => ab.B3.DefaultIfEmpty(),
(a, b) => new
{
a.A3.FuncName,
a.A3.FuncDesc,
a.A3.FuncTypeFlag,
a.A3.CtlName1,
a.A3.CtlName2,
a.A3.CtlName3,
a.A3.CtlName4,
a.A3.CtlName5,
a.A3.CtlName6,
a.A3.CtlName7,
a.A3.CtlName8,
a.A3.CtlName9,
a.A3.CtlName10,
a.A3.CtlName11,
a.A3.CtlName12,
a.A3.CtlName13,
a.A3.CtlName14,
a.A3.CtlName15,
a.A3.CtlName16,
a.A3.CtlName17,
a.A3.CtlName18,
a.A3.CtlName19,
a.A3.CtlName20,
a.A3.CtlName21,
a.A3.CtlName22,
a.A3.CtlName23,
a.A3.CtlName24,
a.A3.CtlName25,
a.A3.TabName1,
a.A3.TabName2,
a.A3.TabName3,
a.A3.TabName4,
a.A3.TabName5,
a.A3.TabName6,
a.A3.TabName7,
a.A3.TabName8,
a.A3.TabName9,
a.A3.TabName10,
a.A3.TabName11,
a.A3.TabName12,
a.A3.TabName13,
a.A3.TabName14,
a.A3.TabName15,
a.A3.TabName16,
a.A3.TabName17,
a.A3.TabName18,
a.A3.TabName19,
a.A3.TabName20,
a.A3.TabName21,
a.A3.TabName22,
a.A3.TabName23,
a.A3.TabName24,
a.A3.TabName25,
a.A3.OptName1,
a.A3.OptName2,
a.A3.OptName3,
a.A3.OptName4,
a.A3.OptName5,
a.A3.OptName6,
a.A3.OptName7,
a.A3.OptName8,
a.A3.OptName9,
a.A3.OptName10,
a.A3.OptName11,
a.A3.OptName12,
a.A3.OptName13,
a.A3.OptName14,
a.A3.OptName15,
a.A3.OptName16,
a.A3.OptName17,
a.A3.OptName18,
a.A3.OptName19,
a.A3.OptName20,
a.A3.OptName21,
a.A3.OptName22,
a.A3.OptName23,
a.A3.OptName24,
a.A3.OptName25,
a.A3.FldEnMaskUseFlag,
a.A3.HelpUrl,
a.A3.CtlEnFlag1,
a.A3.CtlEnFlag2,
a.A3.CtlEnFlag3,
a.A3.CtlEnFlag4,
a.A3.CtlEnFlag5,
a.A3.CtlEnFlag6,
a.A3.CtlEnFlag7,
a.A3.CtlEnFlag8,
a.A3.CtlEnFlag9,
a.A3.CtlEnFlag10,
a.A3.CtlEnFlag11,
a.A3.CtlEnFlag12,
a.A3.CtlEnFlag13,
a.A3.CtlEnFlag14,
a.A3.CtlEnFlag15,
a.A3.CtlEnFlag16,
a.A3.CtlEnFlag17,
a.A3.CtlEnFlag18,
a.A3.CtlEnFlag19,
a.A3.CtlEnFlag20,
a.A3.CtlEnFlag21,
a.A3.CtlEnFlag22,
a.A3.CtlEnFlag23,
a.A3.CtlEnFlag24,
a.A3.CtlEnFlag25,
a.A3.TabDsFlag1,
a.A3.TabDsFlag2,
a.A3.TabDsFlag3,
a.A3.TabDsFlag4,
a.A3.TabDsFlag5,
a.A3.TabDsFlag6,
a.A3.TabDsFlag7,
a.A3.TabDsFlag8,
a.A3.TabDsFlag9,
a.A3.TabDsFlag10,
a.A3.TabDsFlag11,
a.A3.TabDsFlag12,
a.A3.TabDsFlag13,
a.A3.TabDsFlag14,
a.A3.TabDsFlag15,
a.A3.TabDsFlag16,
a.A3.TabDsFlag17,
a.A3.TabDsFlag18,
a.A3.TabDsFlag19,
a.A3.TabDsFlag20,
a.A3.TabDsFlag21,
a.A3.TabDsFlag22,
a.A3.TabDsFlag23,
a.A3.TabDsFlag24,
a.A3.TabDsFlag25,
a.A3.OptValue1,
a.A3.OptValue2,
a.A3.OptValue3,
a.A3.OptValue4,
a.A3.OptValue5,
a.A3.OptValue6,
a.A3.OptValue7,
a.A3.OptValue8,
a.A3.OptValue9,
a.A3.OptValue10,
a.A3.OptValue11,
a.A3.OptValue12,
a.A3.OptValue13,
a.A3.OptValue14,
a.A3.OptValue15,
a.A3.OptValue16,
a.A3.OptValue17,
a.A3.OptValue18,
a.A3.OptValue19,
a.A3.OptValue20,
a.A3.OptValue21,
a.A3.OptValue22,
a.A3.OptValue23,
a.A3.OptValue24,
a.A3.OptValue25,
a.A3.FldEnAllFlag,
a.A3.FldEnMask,
a.A3.Factory,
a.A3.SecGrpId
}
).ToList();
注:DefaultIfEmpty忘了括号(方法名)
toList() to是大写(ToList())
本文介绍了如何在C#中使用Linq进行多表联查,包括两表和三表的联合查询,并展示了如何动态添加多个查询条件。同时,文章还提到了在实际操作中应注意的Linq语法细节,如DefaultIfEmpty方法的使用和toList方法的大写问题。
658

被折叠的 条评论
为什么被折叠?



