C# LINQ到SQL,获取给定ID的最新记录
因蒂 林克是个新手 我有一张评分表。C# LINQ到SQL,获取给定ID的最新记录,c#,linq-to-sql,C#,Linq To Sql,因蒂 林克是个新手 我有一张评分表。 用户为实体添加一组评级 每个用户一个实体可以有多个评级集 例如,假设实体是一辆汽车。这辆车是按外观和性能评定的。用户可以对给定汽车的外观和性能进行多次评分。所以我的表看起来像这样(评级字段不是一个标识列;它是一个1-10分制的整数): 现在,我有了一个helper方法,在这里我提供了UserID和EntityID,我想返回最近的一组评级(到包含评级类别的ViewModel中) public静态IQueryable GetRatingViewModel(int
用户为实体添加一组评级 每个用户一个实体可以有多个评级集 例如,假设实体是一辆汽车。这辆车是按外观和性能评定的。用户可以对给定汽车的外观和性能进行多次评分。所以我的表看起来像这样(评级字段不是一个标识列;它是一个1-10分制的整数): 现在,我有了一个helper方法,在这里我提供了UserID和EntityID,我想返回最近的一组评级(到包含评级类别的ViewModel中)
public静态IQueryable GetRatingViewModel(int-EntityID,int-UserID)
{
DB_DB=新的DB();
变量a=
从额定值(单位:db)到额定值
将ratingCat加入_db.RatingCategories
关于rating.RatingCategoryID等于ratingCat.RatingCategoryID
其中rating.UserID==UserID
&&rating.EntityID==EntityID
选择new RatingViewModel
{
Rater=rating.User,
额定值=额定值,
评级类别=评级类别
};
返回a;
}
我需要添加哪种类型的“where”或“groupby”或“orderby”,以便只获取给定UserID和EntityID的最新评分集
谢谢 考虑在方法返回时按
DateSubmitted
排序,然后取您想要的条目数
var a = from rating in _db.Ratings
join ratingCat in _db.RatingCategories
on rating.RatingCategoryID equals ratingCat.RatingCategoryID
where rating.UserID == UserID
&& rating.EntityID == EntityID
orderby rating.DateSubmitted descending
select new RatingViewModel
{
Rater = rating.User,
RaterRating = rating,
RatingCategory = ratingCat
}
.Take(10);
这样行得通,索塔。如果我像你写的那样添加.Take(10),我会得到一个错误,说我的视图模型不包含“Take”的定义。但是,我可以去掉“.Take(10)”,然后只写var b=a.Take(10);它完成了任务。
public static IQueryable<RatingViewModel> GetRatingViewModel(int EntityID, int UserID)
{
DB _db = new DB();
var a =
from rating in _db.Ratings
join ratingCat in _db.RatingCategories
on rating.RatingCategoryID equals ratingCat.RatingCategoryID
where rating.UserID == UserID
&& rating.EntityID == EntityID
select new RatingViewModel
{
Rater = rating.User,
RaterRating = rating,
RatingCategory = ratingCat
};
return a;
}
var a = from rating in _db.Ratings
join ratingCat in _db.RatingCategories
on rating.RatingCategoryID equals ratingCat.RatingCategoryID
where rating.UserID == UserID
&& rating.EntityID == EntityID
orderby rating.DateSubmitted descending
select new RatingViewModel
{
Rater = rating.User,
RaterRating = rating,
RatingCategory = ratingCat
}
.Take(10);
.OrderByDescending(a => a.DateSubmitted).FirstOrDefault()