26

Ich möchte das Geschlecht für Berechnungen, zum Beispiel die männlichen und weiblichen Optionen sind in einer Spalte. Ich möchte alle männlichen oder weiblichen für Berechnung erhalten.Wie bekommt man alle Frauen?

Ich habe eine "berechnete Eigenschaft", die mir eine Liste aller Elemente zusammen mit der Berechnung gibt. Hier ist der Code:

partial void MeanFemale_Compute(ref string result) 
{ 
    // Set result to the desired field value 

    int totalAge = 0; 
    int count = 0; 

    foreach (InsuranceQuotation i in his.DataWorkspace.ApplicationData.InsuranceQuotations) 
    { 
     totalAge += i.mAge; 
     count++; 
    } 

    if (count != 0) 
    { 
     result = (totalAge/count).ToString(); 
    } 

} 

Wie bekomme ich das Geschlecht in dieser "berechnete Eigenschaft" zu filtern.

+0

Berechnete Eigenschaften geben keine Schleifen. Was meinen Sie? –

+35

Ich wäre sogar in einem nicht-generischen Algorithmus interessiert, der nur einen bekommt. Vielen Dank. –

+0

10 Können Sie mit einer if-Anweisung filtern? – jarchuleta

Antwort

0

Können Sie mit einer if-Anweisung filtern?

partial void MeanFemale_Compute(ref string result) 
{ 
    // Set result to the desired field value 

    int totalAge = 0; 
    int count = 0; 

    foreach (InsuranceQuotation i in this.DataWorkspace.ApplicationData.InsuranceQuotations) 
    { 

     if(i.Female == true) 
     { 
      totalAge += i.mAge; 
      count++; 
     } 
    } 

    if (count != 0) 
    { 
     result = (totalAge/count).ToString(); 
    } 

} 
+0

Ich mag 'if (value == true)' nicht und LINQ wäre besser. – Hosch250

7

Sie können LINQ verwenden. Es würde wie folgt aussehen:

int averageAge = this.DataWorkspace.ApplicationData.InsuranceQuotations. 
    Where(iq => iq.Gender == Gender.Female). 
    Average(iq => iq.mAge); 
0

Hoffnung würde dies jemand anderes zum Filtern der Auswahlliste in _InitializeDataWorkspace helfen:

 // get count of females 
     double fgender = (from gender in InsuranceQuotations 
          where gender.mGender == "Female" 
          select gender).Count(); 

     //get sum of females ages 
     double female = InsuranceQuotations.Where(x => x.mGender == "Female").Sum(t => t.mAge); 

     // get count males 
     double mgender = (from gender in InsuranceQuotations 
          where gender.mGender == "Male" 
          select gender).Count(); 

     //get sum of males ages 
     double male = InsuranceQuotations.Where(x => x.mGender == "Male").Sum(t => t.mAge);  

     // MeanFmale amd MeanMmale - The fields that display 
     MeanFmale = (female/fgender).ToString(); 
     MeanMmale = (male/mgender).ToString(); 

Oder

double fmale = InsuranceQuotations.Where(x => x.mGender == "Female").Average(t => t.mAge); 

    double mmale = InsuranceQuotations.Where(x => x.mGender == "Male").Average(t => t.mAge); 

    // MeanFmale amd MeanMmale - The fields that display 
    MeanFmale = fmale.ToString(); 
    MeanMmale = mmale.ToString();