我有一个例程,我正在访问数据库中的表并从数据创建模型。
数据库表TblUNote
ID Quarter Year SubID Data
1 1 2007 245 DataPoint1
2 1 2007 245 Datapoint2
3 1 2007 245 Datapoint3
4 1 2007 247 DataPoint1
5 1 2007 247 Datapoint2
6 1 2007 247 Datapoint3
7 1 2007 249 DataPoint1
8 1 2007 249 Datapoint2
例行程序
public RData[] GetData(int Q, int Y)
{
using (Entities be = new Entities())
{
List<RData> nlist = new List<RData>();
List<TblUNote> info = be.TblUNotes.Where(a => a.Quarter == Q && a.Year == Y).ToList();
foreach (var item in info)
{
Rdata newmodel = new RData()
{
//create model
};
}
nlist.Add(newmodel);
}
return(nlist).ToArray();
}
这有效,但现在我需要修改它,以便只为每个SubID创建一个模型条目。我尝试过使用.Distinct(),但我得到了相同的数据。我尝试使用.First()但无论我把它放在数据库调用中的什么地方,我都会收到错误。我需要模型列表
RData Model
Item1 Quarter = 1, Year = 2007, SubID = 245, Data = DataPoint1
Item2 Quarter = 1, Year = 2007, SubID = 247, Data = DataPoint1
Item3 Quarter = 1, Year = 2007, SubID = 249, Data = DataPoint1
问题是我无法将SubID与之比较。我想.Distinct()会给我一个方法来做到这一点。我确信。首先应该如何将其集成到数据库调用中。
答案 0 :(得分:1)
您可以使用GroupBy,并获取每个组的第一项:
be.TblUNotes
.Where(a => a.Quarter == Q && a.Year == Y)
.GroupBy(m => m.SubId)
.Select(g => g.FirstOrDefault())//or g.OrderBy(m => m.Data).FirstOrDefault(), for example, I don't know which item you wanna take
.ToList();