我在dataBase中有一些表。 INV
,LIB
,TRAN_TT1
数据类型3表中的所有字段都是字符串。我写这段代码
var m = new MaterialModelContainer();
var list = (from inv in m.INVs
where inv.NEW_QTY == "000000"
join lib in m.LIBs on inv.MESC equals lib.MESC
join tt1 in m.TRAN_TT1 on inv.MESC equals tt1.MESC4
where tt1.TYPE2 == "60" && tt1.QTY == "000000"
select new
{
inv.MESC,
lib.LINE_NO,
lib.UNIT_LINE,
Description = lib.DES + " " + lib.PART_NO,
}).ToList();
表TRAN_TT1
有一个ACTD字段,我希望得到最大值
我写这段代码
var m = new MaterialModelContainer();
var list = (from inv in m.INVs
where inv.NEW_QTY == "000000"
join lib in m.LIBs on inv.MESC equals lib.MESC
join tt1 in m.TRAN_TT1 on inv.MESC equals tt1.MESC4
where tt1.TYPE2 == "60" && tt1.QTY == "000000"
select new
{
inv.MESC,
lib.LINE_NO,
lib.UNIT_LINE,
Description = lib.DES + " " + lib.PART_NO,
ACTD= tt1.ACTD.Max()
}).ToList();
但没有工作,
请帮助我获得最大ACTD字段。谢谢所有
答案 0 :(得分:1)
怎么样
ACTD = tt1.ACTD.Max(x => x);
答案 1 :(得分:1)
不确定,但是错误 尝试
ACTD= ((int?) tt1.ACTD).Max()
答案 2 :(得分:1)
Max是一个聚合函数,Linq中的聚合函数具有与SQL中相同的限制 - 如果您对其中一个列使用聚合函数 - 所有其他使用列也应该在聚合函数中使用,或者您应该使用GroupBy被他们。 所以你的样本应该是这样的:
var m = new MaterialModelContainer();
var list = (from x in
(from inv in m.INVs
where inv.NEW_QTY == "000000"
join lib in m.LIBs on inv.MESC equals lib.MESC
join tt1 in m.TRAN_TT1 on inv.MESC equals tt1.MESC4
where tt1.TYPE2 == "60" && tt1.QTY == "000000"
select new {inv.MESC, lib.LINE_NO, lib.UNIT_LINE, Description = lib.DES + " " + lib.PART_NO, tt1.ACTD})
group by new {x.MESC, x.LINE_NO, x.UNIT_LINE, x.Description} into g
select new {g.Key.MESC, g.Key.LINE_NO, g.Key.UNIT_LINE, g.Key.Description, ACTDMax = g.Max(tt2 => tt2.ACTD) } );
答案 3 :(得分:0)
您可以为get max ACTD值编写此代码
var m = new MaterialModelContainer();
var list = (from x in
(from inv in m.INVs
where inv.NEW_QTY == "000000"
join lib in m.LIBs on inv.MESC equals lib.MESC
join tt1 in m.TRAN_TT1 on inv.MESC equals tt1.MESC4
where tt1.TYPE2 == "60" && tt1.QTY == "000000"
select
new
{
inv.MESC,
lib.LINE_NO,
lib.UNIT_LINE,
Description = lib.DES + " " + lib.PART_NO,
tt1.ACTD
})
group x by new {x.MESC, x.LINE_NO, x.UNIT_LINE, x.Description}
into g
select
new
{
g.Key.MESC,
g.Key.LINE_NO,
g.Key.UNIT_LINE,
g.Key.Description,
ACTDMax = g.Max(tt2 => tt2.ACTD)
}
).OrderBy(c=>c.MESC).ToList();