merhaba linq da list ve tek dönen her kayıt için eşitleme yapmak zorunda kalıyorum,kullandığım struct yapısı database deki kolon isimleriyle aynı,yapmak istediğim eşitleme yapmadan direk query i return yapmak her seferinde bütün field leri tek tek yazmak hem zaman kaybı hemde kod kalabalığı oluyor normal yaptığım şekli bu

 public class Person 
    {
        public string Name      { get; set; }
        public string LastName  { get; set; }
        public string Age       { get; set; }
        public string Adress    { get; set; }
        public string Phone     { get; set; }    
}

     public Person GetPerson(Guid id)
    {
        Person personItem = new Person();

        var query = (from p in DbEntitires.Person
                     where p.Guid.Equals(id)
                     select p).SingleOrDefault();

        personItem.Name = query.Name;
        personItem.LastName = query.LastName;
        personItem.Age = query.Age;
        personItem.Adress = query.Adress;
        personItem.Phone = query.Phone;

        return personItem;
    }

 public List<Person> GetPersons()
    {
        var query = (from p in DbEntities.Person
                     select p).ToList();

        if (query != null)
        {
            List<Person> personItems = new List<Person>();
            Person personItem = new Person();

            foreach (var item in query)
            {
                  personItem.Name = item.Name;
                  personItem.LastName = item.LastName;
                  personItem.Age = item.Age;
                  personItem.Adress = item.Adress;
                  personItem.Phone = item.Phone;

                  personItems.Items.Add(crewItem);
            }
        }

        return personItems;
    }

yapmak istediğim direk field leri tek tek yazmadan sorgu kısmında veri leri bu yapıya ata demek

örnek :

     public Person GetPerson(Guid id)
    {
        Person personItem = new Person();

       // sorgu alanında datayı direk yapıya tek tek field leri yazmadan atamak

        var query = from p in DbEntitires.Person
                     where p.Guid.Equals(id)
                     select p;
   }

soruldu: 04 Şub '14, 06:52

Anatolium's gravatar image

Anatolium
78141520
cevap kabul oranı: 9%

değiştirildi: 04 Şub '14, 07:04

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288


nitekim biraz uğraşınca basit bir şekilde olduğunu buldum.Benimde inandığım tek bir şeye bağımlı kalmadan farklı yollarla bir iş yapılabildiğidir,hatta üçüncü bir yolunuda buldum foreach ve forla ancak tam bakamadım işden dolayı ama olabilcek gibi

başkalarına yardımcı olması amacıyla her 2 şeklinide yazıyorum

struct yapım

 public struct CrewItem
    {
        public string Name      { get; set; }
        public string LastName  { get; set; }
        public string Age       { get; set; }
        public string Adress    { get; set; }
        public string Phone     { get; set; }    
}

1.yol

public List<CrewItem> GetCrews()
{
    List<CrewItem> crewItems = new List<CrewItem>();

    var query = from p in _DbEntities.t_Crew
                select p;

    crewItems = query.Cast<CrewItem>().ToList();
    // yada   `**crewItems = query.Cast<CrewItem>().ToList<CrewItem>();**`
    return crewItems;

}

2.yol

eğer kendi hazırladığınız listi kullanmak isterseniz

public class CrewItems 
{
    public CrewItems()
    {
        Items = new List<CrewItem>();
    }

    public List<CrewItem> Items { get; set; }
}

     public CrewItems GetCrews()
    {
        CrewItems crewItems = new CrewItems();

        var query = from p in _DbEntities.t_Crew
                    select p;

        crewItems.Items = query.Cast<CrewItem>().ToList();
        // yada   `crewItems.Items = query.Cast<CrewItem>().ToList<CrewItem>();`
        return crewItems;
    }
permanent link

cevaplandı: 06 Şub '14, 04:48

Anatolium's gravatar image

Anatolium
78141520
cevap kabul oranı: 9%

değiştirildi: 06 Şub '14, 04:49

teşekkürler ali bey ancak

ORM yapısına uygun olsun diye bu şekilde yapmak istedim ve ancak serileştirme ve servisler de bunu kullanabilirmiyim ? ve neden bir struct yada class yapısında ORM yapısında bu olmuyor acaba ? çünkü bazen oluyorki tablo adıyla code tarafında kullanmak istediğim field isimleri farklı olabilir, bu durumda her yerde tablonun field lerini kullanmak zorundayım, ve bazen generic list yapıları hazırlamak zorundayım bu şekilde sadece List<tablo> halinde kullanabilirim

cevabınızdan sonra bu şekilde düzenleme yaptım ancak yine hata alıyorum (cevabınız evet çalışıyor ama o şekilde tablo field isimlerine bağlı kalmış oluyorum ve generic listler hazırlayamam tek bir List<> şekline bagımlı kalırım

tablo adım t_Crew

  public class CrewItem :t_Crew
{
   düşüncem t_crew tablosundan inherit ettiğinden tüm field ler CrewItem içine geçicek
}

public class CrewItems  
{
    public CrewItems()
    {
        Items = new List<CrewItem>();
    }

    public List<CrewItem> Items { get; set; }
}

örnek hata veren bir function

    public CrewItems GetCrews()
    {
        var query = from p in _DbEntities.t_Crew
                    select p;

     return query.ToList();

    }
permanent link

cevaplandı: 04 Şub '14, 09:08

Anatolium's gravatar image

Anatolium
78141520
cevap kabul oranı: 9%

değiştirildi: 04 Şub '14, 09:10

yanlış anlamışsınız oluşturamam değil, oluşturmam gerekiyor yazdım

bazen generic listler oluşturmam gerekiyor, yukarıda verdiğim generic listde buna bir örnek ve dediğiniz gibi birden fazla tabloyu join lediğim durumlar oluyor sadece yukarıda verdiğim list yapısı yanlışmı çünkü tablodan inherit ettim bu şekilde yapınca oluyor

    public List<t_Crew> GetCrews()
    {
        var query = from p in _DbEntities.t_Crew
                    select p;

      return   query.ToList();

    }

ama bu şekilde yapınca olmuyor nedeni anlamadım

  public class CrewItem :t_Crew
{
   düşüncem t_crew tablosundan inherit ettiğinden tüm field ler CrewItem içine geçicek
}

public class CrewItems  
{
    public CrewItems()
    {
        Items = new List<CrewItem>();
    }

    public List<CrewItem> Items { get; set; }
}

    public CrewItems GetCrews()
    {
        CrewItems crewItems = new CrewItems();

        var query = from p in _DbEntities.t_Crew
                    select p;

        return crewItems.Items = query.ToList();

    }
permanent link

cevaplandı: 04 Şub '14, 09:25

Anatolium's gravatar image

Anatolium
78141520
cevap kabul oranı: 9%

değiştirildi: 04 Şub '14, 09:27

Eğer siz enterprise çapta bir projede çalışıyorsanız zaten oluşturacağız servis metodlarınızda join işlemleri olmak zorunda.(%99) Neden derseniz servis metodları gelen hizmete cevap vermek için yazılır. Bir tablodan ilgili id nin bilgilerini dön şeklinde bir servis metodu olmaz. Bu nedenle, Siz direk olarak bir tablonun alanlarını temsil eden dto larınızdaki ilgili field ları tek tek atamak zorundasınız. Bunun şuan için sizin açınızdan zaman kaybı olarak görülebildiğini tahmin edebiliyorum. Ancak bunu bu şekilde yapmanız size ileride çok büyük artı sağlayacaktır. Bilgiler tecrübe ile sabittir :)

permanent link

cevaplandı: 05 Şub '14, 02:27

emax_64's gravatar image

emax_64
64589102101
cevap kabul oranı: 20%

merhaba bende zaten o konuda tecrübe sahibi olduğum ve yeni tecrübe kazanmak için farklı, ve sabit olmayan bir yol arıyorum,hep aynı yazarsam yeni tecrübeler kazanabilirmiyim ? mutlak bir çözüm bence vardır

permanent link

cevaplandı: 06 Şub '14, 03:45

Anatolium's gravatar image

Anatolium
78141520
cevap kabul oranı: 9%

değiştirildi: 06 Şub '14, 03:45

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238
×6

Soruldu: 04 Şub '14, 06:52

Görüntüleme: 913 kez

Son güncelleme: 06 Şub '14, 05:22

powered by BitNami OSQA