SORU
24 Aralık 2008, ÇARŞAMBA


NameValueCollection ETMENİZ Sorgulamak için erişilebilir hale

Nasıl NameValueCollection nereye gibi SERİ sorgu operatör için erişilebilir hale getirmek için, katılmak, groupby?

Aşağıda denedim:

private NameValueCollection RequestFields()
{
    NameValueCollection nvc = new NameValueCollection()
                                  {
                                      {"emailOption: blah Blah", "true"},
                                      {"emailOption: blah Blah2", "false"},
                                      {"nothing", "false"},
                                      {"nothinger", "true"}
                                  };
    return nvc;

}

public void GetSelectedEmail()
{
    NameValueCollection nvc = RequestFields();
    IQueryable queryable = nvc.AsQueryable();
}

Ama bir ben varArgumentExceptiono bana söylüyorkaynak IEnumerable<^ değildir ..

CEVAP
28 Aralık 2008, Pazar


"- Jenerik olmayan IEnumerable IEnumerable<string>. bir" asansör gerekir OfType kullandığınız sürülmüştür ama süzme bir yöntemdir. Ne yaptığını kendisi için Cast operatör var bir döküm eşdeğer

var fields = RequestFields().Cast<string>();

Frans belirttiği gibi, bu sadece tuşlara erişim sağlar. Hala bu değerler için koleksiyon dizini gerekir. Burada NameValueCollection KeyValuePairs ayıklamak için bir uzantısı yöntemi:

public static IEnumerable<KeyValuePair<string, string>> ToPairs(this NameValueCollection collection)
{
    if(collection == null)
    {
        throw new ArgumentNullException("collection");
    }

    return collection.Cast<string>().Select(key => new KeyValuePair<string, string>(key, collection[key]));
}

Düzenleme:Bartelink talebi Ruben @yanıt olarak, burada her anahtar ToLookup kullanmak için değerleri tam set erişim için:

public static ILookup<string, string> ToLookup(this NameValueCollection collection)
{
    if(collection == null)
    {
        throw new ArgumentNullException("collection");
    }

    var pairs =
        from key in collection.Cast<String>()
        from value in collection.GetValues(key)
        select new { key, value };

    return pairs.ToLookup(pair => pair.key, pair => pair.value);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • hytchme

    hytchme

    9 Mart 2014
  • magnum33563

    magnum33563

    8 NİSAN 2011