我正在编写一个函数,它使用LINQ从DataBase中获取记录以获得IQueryable.此LINQ语句将在特定时间段内为活动用户提取所有记录,然后将UserID,First Name和Last Name吐出到Telerik RadGrid.
我的问题在于在拉动此数据时尝试在UserID上获得一个独特的值.我尝试重新编写此代码以获取结果.以下是拉动所有数据的代码示例,其中Distinct NOT工作.
public static IQueryable GetActiveEmployees_Grid(string Period)
{
DataContext Data = new DataContext();
var Employees = (from c in DataSystem_Records
where c.Period == Period
orderby c.DataSystem_Employees.LName
select c).Distinct();
return Employees;
}
Run Code Online (Sandbox Code Playgroud)
将DataSource应用到我的网格后,这将返回用户4次,该句点的每个记录一个实例.

有没有办法将Distinct应用于我的LINQ函数以使其按照我打算的方式工作?
Gag*_*age 24
我发现用对象执行此操作的最简单方法是使用groupby然后选择第一个.
public static IQueryable GetActiveEmployees_Grid(string Period)
{
DataContext Data = new DataContext();
var Employees = (from c in DataSystem_Records
where c.Period == Period
orderby c.DataSystem_Employees.LName
select c).GroupBy(g=>g.DataSystem_Employees.AccID).Select(x=>x.FirstOrDefault());
return Employees;
}
Run Code Online (Sandbox Code Playgroud)
这没有经过测试,但一般的概念就在那里.
编辑:我记得最初在这里找到答案的地方.看看这个用于按特定属性对对象进行分组. LINQ对特定属性的Distinct()
如果将要返回的对象限制为仅显示要显示的字段,则它将正常工作.
public static IQueryable GetActiveEmployees_Grid(string Period)
{
DataContext Data = new DataContext();
var Employees = (from c in DataSystem_Records
where c.Period == Period
orderby c.DataSystem_Employees.LName
select c.DataSystem_Employees.FName,
c.DataSystem_Employees.LName,
c.ID).Distinct();
return Employees;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27083 次 |
| 最近记录: |