2013-09-24 64 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)並嘗試使用。 –