AnonymousType#1到int

时间:2011-02-22 06:19:32

标签: c# linq-to-sql

 var _maxID = from a in db.Articles
              where a.CategoryId == categoryID
              orderby a.Id descending
              select new {ID = a.ID};    

 int maxID = _maxID.FirstOrDefault().Id;

此代码给我一个错误

  

无法将类型'AnonymousType#1'隐式转换为'int'

如何避免此错误?

3 个答案:

答案 0 :(得分:3)

您可以使其更简单,只需使用Max功能。

var _ids = from a in db.Articles
           where a.CategoryId == categoryID
           select a.ID;    

int maxID = _ids.Max();

答案 1 :(得分:1)

如果在访问该值之前不打算检查null,请不要使用FirstOrDefault。只需使用First()然后。

其次,您可以直接选择a.ID.

[...]
orderby a.Id descending
select a.ID

答案 2 :(得分:1)

您可以使用(但必须在访问前检查null)

int  maxID = Convert.ToInt32(_maxID.FirstOrDefault().ID);
//or
int? maxID = _maxID.FirstOrDefault().ID as int;
//or
int maxID = (int)_maxID.FirstOrDefault().ID;