Odpowiedzi:
Używanie wyrażenia lambda ...
var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();
Spróbuj tego:
var results = (from ta in context.TestAddresses
select ta.Name).Distinct();
W ten sposób otrzymasz IEnumerable<string>- możesz zadzwonić .ToList()do niego, aby uzyskać List<string>.
Sposób, w jaki pokazał @alliswell , jest całkowicie ważny i jest inny sposób! :)
var result = EFContext.TestAddresses
.GroupBy(ta => ta.Name)
.Select(ta => ta.Key);
Mam nadzieję, że komuś się przyda.
DBContext.TestAddresses.Select(m => m.NAME).Distinct();
jeśli masz wiele kolumn, zrób tak:
DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();
W tym przykładzie nie ma zduplikowanego identyfikatora CategoryId ani CategoryName, mam nadzieję, że to pomoże
Entity-Framework Wybierz wyróżniającą nazwę:
Załóżmy, że jeśli używasz widoków, w których używasz wielu tabel i chcesz zastosować odrębne w tym przypadku, najpierw musisz przechowywać wartość w zmiennej, a następnie możesz zastosować Distinct do tej zmiennej, takiej jak ta ...
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();
}
Lub możesz wypróbować ten prosty przykład
Public Function GetUniqueLocation() As List(Of Integer)
Return db.LoginUsers.Select(Function(p) p.LocID).Distinct().ToList()
End Function
użyć select (). Wyraźny ()
na przykład
DBContext db = new DBContext();
var data= db.User_Food_UserIntakeFood .Select( ).Distinct();
Entity-Framework Wybierz wyróżniającą nazwę:
Załóżmy, że chcesz otrzymać wszystkie pierwsze dane z określonej kolumny z każdej grupy;
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);
}
}