-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 のリストが含まれます。

ここで、このリスト内の個別のレコードのみを取得したいと考えています。

リストの代わりにハッシュテーブルで試してみましたが、試して みました

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 に答える