SORU
12 AĞUSTOS 2010, PERŞEMBE


Nasıl seri sonuçları HashSet veya HashedSet dönüştürmek

Bir ISet olan bir sınıfın bir özelliği var. Mal etmeniz sorgu sonuçlarını almak için çalışıyorum, ama bunu yapmak için nasıl anlamaya olamaz.

Temel olarak, bu son kısmı için:

ISet<T> foo = new HashedSet<T>();
foo = (from x in bar.Items select x).SOMETHING;

Ayrıca bunu yapabilir:

HashSet<T> foo = new HashSet<T>();
foo = (from x in bar.Items select x).SOMETHING;

Edit: Bu işi yaparken buldum kendimi nedir:

    public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
    {
        return new HashSet<T>(source);
    }

    public static HashedSet<T> ToHashedSet<T>(this IEnumerable<T> source)
    {
        return new HashedSet<T>(source.ToHashSet());
    }

CEVAP
12 AĞUSTOS 2010, PERŞEMBE


Bilmiyorumdüşünüyorumhiçbir şey bu mu inşa var... ama gerçekten kolay bir uzantı yöntemi yazma:

public static class Extensions
{
    public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
    {
        return new HashSet<T>(source);
    }
}

Gerçekten bir uzantısı yöntemi (ya da bazı form en azından genel bir yöntem) T türü açıkça ifade etmek mümkün olmayabilir, çünkü: burada, ister unutmayın

var query = from i in Enumerable.Range(0, 10)
            select new { i, j = i   1 };
var resultSet = query.ToHashSet();

HashSet<T> kurucu için açık çağrı ile bunu yapamazsın. Genel yöntemler için tür kesmesi bizim için güveniyoruz.

Şimdi de senolabilirToSet dönüş ISet<T> ama ToHashSet alırdım ve beton tipi adı seçin. Bu standart SERİ operatörleri (,* ToDictionary *16) ile tutarlı ve gelecekteki genişleme (*17 örneğin*) sağlar. Ayrıca aşırı yüklenme karşılaştırma kullanmaya belirterek sağlamak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • The Brister

    The Brister

    10 ŞUBAT 2008