1

distinctの1 つの列を使用して行コレクション全体を取得する必要がありますLINQ

私はDistinct使用してGroupByいますが、行全体が必要な代わりに1つの列の値のみを選択します。

**このリストは、ThumbnailAltText 列で一意のコレクションを返しますが、行全体の値ではなく、その列のみを返します。だから私はvar代わりに使用しなければならなかったtype

 var catlist = _db.ac_Categories
    .Where(c => c.VisibilityId == 0 && c.ThumbnailAltText != null
        && (!c.ThumbnailAltText.StartsWith("gifts/")
        && !c.ThumbnailAltText.StartsWith("email/")
        && !c.ThumbnailAltText.StartsWith("news/")
        && !c.ThumbnailAltText.StartsWith("promotions/")
        && !c.ThumbnailAltText.StartsWith("the-knowledge/"))).ToList()
        .GroupBy(c=> c.ThumbnailAltText.Trim().Distinct()).ToList();
                                .GroupBy(c=> c.ThumbnailAltText.Trim().Distinct()).ToList();

同じことがこのように機能せずtype、エラーが発生しています。

List<ac_Categories> catlist = _db.ac_Categories
        .Where(c => c.VisibilityId == 0 && c.ThumbnailAltText != null
            && (!c.ThumbnailAltText.StartsWith("gifts/")
            && !c.ThumbnailAltText.StartsWith("email/")
            && !c.ThumbnailAltText.StartsWith("news/")
            && !c.ThumbnailAltText.StartsWith("promotions/")
            && !c.ThumbnailAltText.StartsWith("the-knowledge/"))).ToList()
            .GroupBy(c=> c.ThumbnailAltText.Trim().Distinct()).ToList();
                                    .GroupBy(c=> c.ThumbnailAltText.Trim().Distinct()).ToList();

エラー:The 'Distinct' operation cannot be applied to the collection ResultType of the specified argument.

編集: 最初のレコードではなく、コレクションが必要です。ID およびその他の列には、差分値のみが含まれています。ThumbnailAltText には重複が含まれています。

4

2 に答える 2

3

Distinct文字列で一意の文字を返します。すべての行を返したいと思いますが、すべての行は に従って一意である必要がありThumbnailAltTextます。それでよろしいですか?

次に、これは機能するはずです。各グループの最初の行のみを返します。

var catlist = _db.ac_Categories
    .Where(c => c.VisibilityId == 0 && c.ThumbnailAltText != null
        && (!c.ThumbnailAltText.StartsWith("gifts/")
        && !c.ThumbnailAltText.StartsWith("email/")
        && !c.ThumbnailAltText.StartsWith("news/")
        && !c.ThumbnailAltText.StartsWith("promotions/")
        && !c.ThumbnailAltText.StartsWith("the-knowledge/")))
     .GroupBy(c=> c.ThumbnailAltText.Trim())
     .ToList()
     .Select(g => g.First())
     .ToList();
于 2013-10-17T09:16:44.060 に答える