SORU
24 Mart 2009, Salı


Birden fazla YERDE Etmeniz fıkra

SERİ yeniyim ve where birden fazla çalıştırmak için nasıl bilmek istiyorum. Bunu başarmak için istediğim şey: bazı kullanıcı adları filtreleyerek kayıtları döndürür. Ama beklendiği gibi çalışmıyor aşağıdaki kodu denedim.

DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
            where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX"))                            
            select r;    

            DataTable newDT = query.CopyToDataTable();

Şimdiden yardım için teşekkürler!!!

CEVAP
24 Mart 2009, Salı


Sadece birden çok "nerede" doğrudan, ama sanmıyorum hükümler koyabilirsiniz Birden çok "nerede" yan ile biterdaha fazlakısıtlayıcı filtre - istediğini düşünüyorumdaha azkısıtlayıcı bir. Gerçekten istediğini düşünüyorum:

DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
            where r.Field<string>("UserName") != "XXXX" &&
                  r.Field<string>("UserName") != "YYYY"
            select r;

DataTable newDT = query.CopyToDataTable();

&& Yerine | | not. Eğer kullanıcı adı XXXX değil mi eğer satırı seçmek istiyorumvekullanıcı adı YYYY değil.

Eğer bütün bir koleksiyonu Varsa, daha da kolay. EDİT: Toplama varsayalım ignoredUserNames denir:

DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
            where !ignoredUserNames.Contains(r.Field<string>("UserName"))
            select r;

DataTable newDT = query.CopyToDataTable();

İdeal olarak bu HashSet<string> Contains aramayı uzun zaman alarak önlemek için yapmak istersin, ama eğer toplama yeterince küçükse fazla bir oran olmaz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007
  • max2sims2

    max2sims2

    19 Kasım 2008