在同一linq查询中检索两个值

时间:2009-10-16 11:34:19

标签: c# .net linq linq-to-sql

我从linqToSql开始,我仍然在查询时遇到一些问题。

例如,我想在同一个查询中检索两个值,一个元素子集和一个带有元素计数的整数。这是我单独做的方式:

  int totalElements;
  IEnumerable<ClsTax> result;
  result = (from t in db.tax 
           select new ClsTax { Tax = t.tax1, Increase = t.increase }).Take(25);

  totalElements = (from t in db.tax 
             select new ClsTax { Tax = t.tax1, Increase = t.increase }).Count();  

正如你所看到的,我不能使用result.count(),因为我使用Take(25)只获得了第一个25个元素,我想知道数据库中有多少个元素。

有没有办法只使用一个linq查询来获取这两个值?

谢谢!

2 个答案:

答案 0 :(得分:3)

怎么样:

var all = (from t in db.tax select new ClsTax { Tax = t.tax1, Increase = t.increase });
var count = all.Count();
var result = all.Take(25);

有点简单?

答案 1 :(得分:1)

试试这个:

var result = (from t in db.tax group t by t.ID into g select new { Tax = g.First().tax1, Increate = t.First().Increase, TotalElements = g.Count() });