我有一个Myclass
List<Myclass> liSubjectIdDetail = new List<Myclass>();
Myclass看起来像
public class Myclass
{
public Nullable<decimal> SubjectId { get; set; }
public string SubjectName { get; set; }
}
我正在从表中添加记录到liSubjectIdDetail
foreach (decimal Id in VarCEMSIdDetail)
{
liSubjectIdDetail.AddRange(db.Stt.MyTable.Where(x => x.Id == Id).Select(x => new Myclass { SubjectId = x.SubjectId, SubjectName = x.SubjectName }).ToList());
}
其中Id包含基于我获取的记录的某些ID的列表。
现在我想在此列表中只获得不同的记录。
我尝试用哈希表代替列表
我也试过
liSubjectIdDetail= liSubjectIdDetail.Distinct().ToList();
但这也是行不通的。请给我一个更好的解决方案 提前致谢
答案 0 :(得分:1)
尝试此扩展方法
public static class IEnumerableExtensions {
public static IEnumerable<TSource> DistinctBy<TSource, TKey>
(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
var seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
}
用法:
liSubjectIdDetail= liSubjectIdDetail.DistinctBy(s => s.SubjectName).ToList();