Varlık Çerçevesi farklı bir ad seç


Yanıtlar:


271

Lambda ifadesini kullanma ..

 var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();

1
Belki bir daft sorusu olabilir, ancak bu tüm adresleri C # kod katmanına döndürür ve sonra filtreler mi, yoksa yalnızca benzersiz değerleri döndürmek için veritabanı sunucusuna uygun sorguyu iletir mi?
DA

51

Bunu dene:

var results = (from ta in context.TestAddresses
               select ta.Name).Distinct();

Bu size bir IEnumerable<string>- verecek bir .ToList()almak için arayabilirsiniz List<string>.


1
Bu şekilde gruplandırmadan daha iyi performans elde edersiniz. Farklı: SQL Server Yürütme Süreleri: CPU süresi = 0 ms, geçen süre = 50 ms. Gruplama: SQL Server Yürütme Süreleri: CPU süresi = 0 ms, geçen süre = 112 ms.
Andre Mendonca

24

@Alliswell'in gösterdiği yol tamamen geçerlidir ve başka bir yol daha vardır! :)

var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);

Umarım birisi için faydalı olur.


1
Birden fazla sütun seçmek gerektiğinden bu benim için çok yararlı oldu
mamashare

16
DBContext.TestAddresses.Select(m => m.NAME).Distinct();

Birden fazla sütununuz varsa bunu yapın:

DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();

Bu örnekte yinelenen CategoryId ve CategoryName yok, bu size yardımcı olacağını umuyorum


4

Varlık-Çerçeve Seçimi Farklı Adı:

Birden çok tablo kullandığınız Görünümler kullanıyorsanız ve bu durumda farklı uygulamak istediğinizi varsayalım, önce değişkeni değerde saklamanız gerekir ve sonra bu gibi değişkene Farklı uygulayabilirsiniz ....

public List<Item_Img_Sal_VIEW> GetItemDescription(int ItemNo) 
        {
            var Result= db.Item_Img_Sal_VIEW.Where(p => p.ItemID == ItemNo).ToList();
            return Result.Distinct().ToList();
        }

Veya bu Basit Örneği deneyebilirsiniz

Public Function GetUniqueLocation() As List(Of Integer)
          Return db.LoginUsers.Select(Function(p) p.LocID).Distinct().ToList()
End Function

Merhaba, bunu bir tabloda yaptığımda, bir hata alıyorum -> dizeyi IEnumreable'a dönüştüremiyorum .. NVARCHAR içeren bir tablo sütunundan farklı değerlerle bir açılır liste doldurabilmem için bana nasıl bir liste alacağımı gösterebilir misin? EF DB.
aggie

3

Select () kullanın. Distinct ()

örneğin

DBContext db = new DBContext();
var data= db.User_Food_UserIntakeFood .Select( ).Distinct();

2

Hatadan kaçınmak ORDER BY items must appear in the select list if SELECT DISTINCTiçin en iyisi

var results = (
    from ta in DBContext.TestAddresses
    select ta.Name
)
.Distinct()
.OrderBy( x => 1);

1

Varlık-Çerçeve Seçimi Farklı Adı:

Her bir grubun belirli bir sütunundaki her ilk veriyi istiyorsanız;

 var data = objDb.TableName.GroupBy(dt => dt.ColumnName).Select(dt => new { dt.Key }).ToList();

            foreach (var item in data)
            {
                var data2= objDb.TableName.Where(dt=>dt.ColumnName==item.Key).Select(dt=>new {dt.SelectYourColumn}).Distinct().FirstOrDefault();

               //Eg.
                {
                       ListBox1.Items.Add(data2.ColumnName);                    
                }

            }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.