-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 包含基于我获取的记录的某些 Id 的列表。

现在我只想在这个列表中获得不同的记录。

我已经尝试使用哈希表代替List
并且我也尝试过

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

但这也是行不通的。请给我一个更好的解决方案。
提前致谢

4

1 回答 1

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();
于 2013-09-24T07:30:10.587 回答