SORU
13 Mayıs 2009, ÇARŞAMBA


Varlıklar bu seri - Sql "" tümcesi

T-SQL sorgu gibi olabilir:

SELECT * FROM Users WHERE User_Rights IN ("Admin", "User", "Limited")

Nasıl Varlıklar sorgusu için bir Seri bunu çoğaltmak istiyorsunuz? Hatta mümkün mü? Teşekkürler!

CEVAP
13 Mayıs 2009, ÇARŞAMBA


Bu konuda düşünme tarzını açısından kafasının üzerine çevirmek gerekir. Yerine yapıyor "" bulmak için geçerli öğenin kullanıcı hakları önceden tanımlanmış bir dizi geçerli kullanıcı hakları, soruyorsun önceden tanımlanmış bir dizi kullanıcı hakları içeren geçerli öğenin geçerli değer. Bu tam olarak normal bir listedeki bir öğeyi bulmak gerekir .NET.

Bu kullanarak ETMENİZ yapmanın iki yolu vardır, bir sorgu sözdizimi kullanır ve diğer bir yöntem, sözdizimi kullanır. Aslında, hepsi aynı ve tercihinize bağlı olarak: birbirinin yerine kullanılabilir

Sorgu Sözdizimi:

var selected = from u in users
               where new[] { "Admin", "User", "Limited" }.Contains(u.User_Rights)
               select u

foreach(user u in selected)
{
    //Do your stuff on each selected user;
}

Yöntem Sözdizimi:

var selected = users.Where(u => new[] { "Admin", "User", "Limited" }.Contains(u.User_Rights));

foreach(user u in selected)
{
    //Do stuff on each selected user;
}

Bu durumda kişisel tercihim değişken atamak yerine, isimsiz bir ihbar üzerine böyle dosyalarda grup yapabilirim çünkü yöntem sözdizimi olabilir

foreach(User u in users.Where(u => new [] { "Admin", "User", "Limited" }.Contains(u.User_Rights)))
{
    //Do stuff on each selected user;
}

Sözdizimi kurallarına göre bu daha karmaşık görünüyor, ve sen kavramını lambda ifadeleri ya da delegeler için gerçekten anlamaya ne oluyor, ama gördüğünüz gibi, bu ayırt edici kod adil bir miktar.

Tüm kodlama stilini tercih ve aşağı benim tüm örnekler üç biraz farklı, aynı şeyi yapmak geliyor.

Alternatif bir yol bile SERİ kullanmaz, aynı yöntem sözdizimi yerine kullanabilirsiniz "nerede" "FindAll" ve de çalışacak olan, aynı sonucu elde .NET 2.0:

foreach(User u in users.FindAll(u => new [] { "Admin", "User", "Limited" }.Contains(u.User_Rights)))
{
    //Do stuff on each selected user;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HTC

    HTC

    12 Ocak 2006
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Tomas N

    Tomas N

    14 Kasım 2010