0

如何在下面的 linq 查询中按描述计数?

我可以选择、分组等但无法计数?

plant = (from c in db.CLIENTDETAILS
         join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
         where c.CLIENTNUMBER == clientNumber
         join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
         where i.LOCNUMBER == l.LOCNUMBER
         join p in db.PLANT on i.CODE equals p.CODE      
         select p.DESCRIPTION.Count())

一如既往地感谢您的帮助

4

5 回答 5

3

您正在对列而不是结果进行计数。尝试移动计数:

  var plant = (from c in db.CLIENTDETAILS
     join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
     where c.CLIENTNUMBER == clientNumber
     join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
     where i.LOCNUMBER == l.LOCNUMBER
     join p in db.PLANT on i.CODE equals p.CODE      
     select p.DESCRIPTION).Count();

您可能可以摆脱where i.LOCNUMBER == l.LOCNUMBER连接中已经处理的以及它,因此您的查询将变为:

  var plant = (from c in db.CLIENTDETAILS
     join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
     where c.CLIENTNUMBER == clientNumber
     join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
     join p in db.PLANT on i.CODE equals p.CODE      
     select p.DESCRIPTION).Count();
于 2013-06-24T11:42:38.383 回答
1

尝试这个

plant = (from c in db.CLIENTDETAILS
     join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
     where c.CLIENTNUMBER == clientNumber
     join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
     where i.LOCNUMBER == l.LOCNUMBER
     join p in db.PLANT on i.CODE equals p.CODE      
     select p.DESCRIPTION).Count();
于 2013-06-24T11:42:47.670 回答
1

您需要将查询包装在括号中以Count对整个查询结果执行。

plant = (from c in db.CLIENTDETAILS
         join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
         where c.CLIENTNUMBER == clientNumber
         join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
         where i.LOCNUMBER == l.LOCNUMBER
         join p in db.PLANT on i.CODE equals p.CODE      
         select p.DESCRIPTION).Count();
于 2013-06-24T11:42:50.847 回答
1
var plant = (from c in db.CLIENTDETAILS
     join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
     where c.CLIENTNUMBER == clientNumber
     join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
     where i.LOCNUMBER == l.LOCNUMBER
     join p in db.PLANT on i.CODE equals p.CODE      
     select p.DESCRIPTION).Count()
于 2013-06-24T11:43:11.260 回答
0
 plant = (from c in db.CLIENTDETAILS
 join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
 where c.CLIENTNUMBER == clientNumber
 join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
 where i.LOCNUMBER == l.LOCNUMBER
 join p in db.PLANT on i.CODE equals p.CODE      
 select p.DESCRIPTION).Count();
于 2013-06-24T12:29:32.390 回答