2017-04-06 8 views
1

Ich habe diesen beide TischLinq zwei Klassen mit Fremdschlüssel

class A 
{ 
    int IdA; 
    String DescA; 
} 

class B 
{ 
    int IdB; 
    String DescB; 
    int IdA; 
} 

IdA in „B“ ist ein Fremdschlüssel für die Klasse A, und ich habe eine Funktion, die eine Liste von „A“ getListA() zurückzukehren und mit diese Funktion muss ich zählen, wie viele „B“, die leer DescB hat, das ist, was ich tat:

var emptyDescB = getListA().Where(p => p.B.All(k => k.DescB != 0)).count(); 

aber dieses nicht funktioniert, wie es sollte: /. Irgendeine Idee Jungs kann ich zählen, wie viele leere DescB, die ich habe?

+0

Wie kommt es, funktioniert nicht? In Ihren Klassen sollten die Felder öffentlich sein, wenn Sie versuchen, auf sie von anderen Klassen aus zuzugreifen. –

+1

Wo befindet sich eine Navigationseigenschaft "B" in Ihrer Klasse "A"? Sonst wie würde Code '.Where (p => pBAll (k = ...)' funktionieren? – Fabjan

+0

Wie kann 'pB' im Rückgabetyp von' getListA() 'existieren, wenn Sie sagen, dass es eine Liste zurückgibt von 'A'? – Phate01

Antwort

0

Die C# -Klassen und die linq-Abfrage, die Sie als Beispiel angegeben haben, stimmen nicht überein, daher ist diese Antwort ein wenig eine Annahme.

Die folgenden Klassen stellen eine 1: n-Beziehung zwischen A und B her; d. h. wo jede A Instanz mehrere Kind B Instanzen haben kann.

public class A 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 

    public virtual ICollection<B> Children { get; set; } 
} 

public class B 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 

    public int ParentId { get; set; } 
    public virtual A Parent { get; set; } 
} 

.. und dann die Funktion getListA() gegeben, die eine Liste von Instanzen A zurückgibt, können Sie die „Anzahl der Instanzen von B wo Description leer“ finden mit:

var numberOfBWithEmptyDescriptions = getListA() 
     .SelectMany(a => a.Children) // .. ignore the 'A' instances, just access their children, the instances of B 
     .Count (b => string.IsNullOrEmpty(b.Description)); // .. count the intances of B with an empty description 
Verwandte Themen