2015-04-16 18 views
6

Üç parametre alır bir yöntemi var. Sınıf kuplajının neden dört olduğunu görebiliyorum.neden Sınıf Kavrama atlama yapar? <code>List<Class1> source</code>, <code>List<Class2) results</code> ve <code>DateTime endDate</code>:

var warnings = from s in source 
    join r in results on s.Field1 equals r.Field1 into joined 
    from j in joined.DefaultIfEmpty() 
    where j == null 
    select string.Format("{0}{1}", A_CONSTANT, s.Field2); 

Sorularım: Bu ifadeyi eklediğinizde Ancak on atlar

  1. LINQ deyimi ile tanıtıldı altı yeni sınıflar nelerdir?
  2. Ve on beri
  3. "iyi kod" Bu LINQ burada iyi bir seçim olmadığını gösterir gelmez üst limiti nedir?

cevap

5

altı ek sınıflar muhtemelen şunlardır:

  • IEnumerable<string> - Sorgunuzda
  • IEnumerable<Class1> sonucu - sol koleksiyon
  • IEnumerable<Class2> - sağ koleksiyon
  • Func<Class1, int> - sol kısım ekspresyonunu
  • birleştirme- projeksiyon Bu sorgu statik uzantısı yöntemi çağrılarına çevrilmiştir beri Enumerable sınıf sayıyor olması da mümkündür

- katıl ifade

  • Func<Class1, Class2, string> sağ kısmı. Her iki durumda da, kod analizi Linq tarafından kullanılan geçici sınıfları ( olmalıdır veya tartışmasız mı) dikkate almaz gibi görünmemektedir. Benim tavsiyem onu ​​görmezden gelmek (belki de manşonu manuel olarak saymak ve farkı belirtmek) ya da daha iyi bir analiz aracı bulmaktır.

    başka soru olurdu: sizin kavrama genel artar? Bu sınıfların birkaçının uygulamanızda kullanıldığından şüpheleniyorum. Bu nedenle, genel birleştirme işleminizde önemli bir fark yaratmayabilir.

  • +0

    Eğer aracı yeterince gelişmiş değildir anahtar kelime uygulamaları üzerinde açma durumunda. Bu seviyede karmaşıklık analizi, kod incelemesinde göz tarafından yapılabilir. – Gusdor

    İlgili konular