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

  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • JTechTalk

    JTechTalk

    11 Temmuz 2010
  • RocketJump

    RocketJump

    22 ŞUBAT 2006