我正在查询一个名为 STUDENT 的表。我想检索 2 个值,即 STUDENT_ID 和 TIME(两者都是字符串)。但是,我只想要 STUDENT_ID 的不同值。当我使用只有 STUDENT_ID 的 Distinct() 时,我确实得到了唯一值。但是在我包含 TIME 的那一刻,所有的值都会显示出来,因为表中的时间都是不同的。我还尝试创建自己的 Comparer 类,并将一个实例传递给 Distinct()。
public class MyCompare : IEqualityComparer<IQueryable>
{
public bool Equals(DataRow x, DataRow y)
{
return (x.Field<string>("STUDENT_ID") == y.Field<string>("STUDENT_ID"));
}
public int GetHashCode(DataRow obj)
{
return obj.ToString().GetHashCode();
}
}
但是,我得到 4 个错误。
1)。有没有办法在 2 个值上使用不同的值?(因为如果它只是 STUDENT_ID 它会排序)我希望它显示 STUDENT_ID 的唯一值并显示相应的 TIMES。
或者.. 2. 我如何制作一个有效的比较器?我收到以下错误。
一个。错误 1 'System.Linq.IQueryable' 不包含 'Distinct' 的定义,并且最佳扩展方法重载 'System.Linq.ParallelEnumerable.Distinct(System.Linq.ParallelQuery, System.Collections.Generic.IEqualityComparer)' 有一些无效参数 C:\Users\KC\Desktop\SoulScanner\SoulScanner\SearchByTime.xaml.cs 360 23 SoulScanner
湾。错误 4 参数 1:无法从 'System.Collections.Generic.IEnumerable' 转换为 'System.Linq.IQueryable' C:\Users\KC\Desktop\SoulScanner\SoulScanner\SearchByTime.xaml.cs 363 43 SoulScanner
C。错误 2 实例参数:无法从 'System.Linq.IQueryable' 转换为 'System.Linq.ParallelQuery' C:\Users\KC\Desktop\SoulScanner\SoulScanner\SearchByTime.xaml.cs 360 23 SoulScanner
d。错误 3 'SoulScanner.dgvRecords.dgvRecords(System.Linq.IQueryable)' 的最佳重载方法匹配有一些无效参数 C:\Users\KC\Desktop\SoulScanner\SoulScanner\SearchByTime.xaml.cs 363 28 SoulScanner