Üçüncü tarafın kullanımına sunulacak ve kendi web uygulamalarım tarafından da kullanılabilecek bir Web API projesi yapıyorum. Web API yöntemleri, karmaşık tür/nesnelerin JSON temsillerini döndürür. Bunlar, üçüncü tarafın kullanımına sunabileceğim önceden tanımlanmış sınıflar, böylece verilerin nasıl yapılandırıldığını anlıyor ve JSON'u seri hale getirebiliyorlar. Birisi beni düzelinceye kadar bu sınıflara DTO sınıfları olarak bakacağım.Linq sonuçlarını yineleme olmadan DTO sınıf nesnesine nasıl dönüştürebilirim
Ben (veritabanından) Aşağıdaki otomatik oluşturulan varlık modeli de bu Kullanıcı sınıfı Tarama tabloya bir ilişki (ilişki bu soruya amacıyla göz ardı edilebilir) ile zaten bir ...
public partial class User
{
public User()
{
this.Scans = new HashSet<Scan>();
}
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public bool Active { get; set; }
public virtual ICollection<Scan> Scans { get; set; }
}
Ve sunu katmanına Liste olarak dönmek istediğim aşağıdaki DTO sınıfı (Sunum için IEnumerable'ı kullanmam gerektiğini sanmıyorum?).
public class User
{
public int Id;
public string Username;
public string Password;
public bool Active;
}
Bu bileşene ilişkin iş katmanım şu anda aşağıdakine benzer. Kullanıcıları veritabanından almak ve sonuçları ayrıştırmak ve POCO Kullanıcıları Listesi <> 'ı döndürmek için Linq kullanma.
public List<User> Get()
{
List<User> userList = new List<User>();
using (var db = new MyContext())
{
var query = from u in db.Users
orderby u.FirstName
select u;
foreach (var item in query)
{
User user = new User();
user.Id = item.pkUser;
user.Username = item.Username;
user.Password = item.Password;
user.Active = item.Active;
userList.Add(user);
}
}
return userList;
}
bu verimsiz görünmektedir gibi sonuçlarda Ayrıştırma ve ben (örn Bu sorunun Mapping Linq Query results to a DTO class yılında cevap) Eğer yineleme olmadan Linq sorguda bu tür bir şey yapabileceğini gördük.
Nesnelerimde bu tür bir Linq sorgusunu etkinleştirmek için IEnumerable'ı nerede ve nasıl kullanacağım konusunda emin değilim ve aynı zamanda yukarıdaki başvurulan soruya benzer bir sorguyu nasıl yazacağımdan da emin değilim. çok daha basit bir senaryo.
Yardımlarınız için şimdiden teşekkür ederiz.
P.S. Lütfen Web API üzerinden Kullanıcı Adı ve Parola'yı gösterdiğimi ve ayrıca tüm Kullanıcıları bir kerede iade ettiğimi dikkate almayın. Yukarıdaki, bu sorunun amacı için kodumun basitleştirilmiş bir sürümüdür.
Ne olursa olsun yinelemeniz gerekecek. Listenizi dönüştürmek için 'Enumerable.Select' kullanabilirsiniz. – Romoku