anahtar ile ayrı grup seçmek adıyla gruba olduğunu ortaya tamamen LINQ yolu, o bağlı olarak seçin.
from i in user
group new {i.ID, i.Country, i.DateRecord} by i.Name into byNmGp
select byNmGp.First();
Düzenleme: Varlık Framework elbette çok popüler bir linq sağlayıcı olmakla (bu durumda) mantıksal olarak eşdeğer FirstOrDefault()
iyi çalışır olsa, burada da First()
işlemez. EF'in sınırlamaları nedeniyle'a zorlanmadığı zaman, First()
'u tercih ediyorum, çünkü buradaki anlamı, burada aranan şeyle daha iyi eşleşiyor. Bu sadece farklı farklı tanımlar
private class MyRecord : IEquatable<MyRecord>
{
public int ID;
public string Name;
public string Country;
public DateTime DateCreated;
public bool Equals(MyRecord other)
{
return Name.Equals(other.Name);
}
public override bool Equals(object obj)
{
return obj is MyRecord && Equals((MyRecord)obj);
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
}
/*...*/
var items = (from i in user select new MyRecord {i.ID, i.Name, i.Country, i.DateRecord}).Distinct();
:
bir başka yolu, bir sınıf yardımcı tanımlamaktır. Performans, sorgu sağlayıcının eşitlik tanımını yorumlayıp yorumlayamayacağı ile farklılık gösterecektir. Kolaylık, benzer LINQ sorgularının aynı şeyi yapıp yapmadığına bağlı olarak farklılık gösterecektir.
Her 'Ad' için birden çok kayıt olduğunu ima ettiniz. Eğer bu doğruysa, o zaman soru diğer alanların nasıl seçileceğini de belirtmelidir (id, ülke, daha önceden işlenmiş). Örneğin, her bir İsim için, rekoru minimum düzeyde işleme tabi tutmayı ister misiniz? – crokusek