2013-09-24 31 views
-1

我有型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包含某个Ids的列表,以我获取的记录为基础。

现在我想在此列表中只显示不同的记录。

我已经到位列表
哈希表尝试过了,我也试过

liSubjectIdDetail= liSubjectIdDetail.Distinct().ToList(); 

但是这也不能正常工作。请给我一个更好的解决方案。
在此先感谢

回答

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(); 
+0

我在编程新的可以请你告诉我在哪里,我必须使用上述扩展 –

+0

创建一个类文件如上(我添加了类def)并尝试使用。 –