4 Stimmen

LINQ: Anzahl der wahren Booleschen Werte in mehreren Spalten zählen

Ich verwende LINQ to SQL, um die Bereitstellung eines Projekts zu beschleunigen, und es hilft mir wirklich dabei. Allerdings habe ich mit einigen Dingen zu kämpfen, die ich bisher mit manuellem SQL gemacht habe.

Ich habe eine LINQ-Sammlung mit drei Spalten, die jeweils einen booleschen Wert enthalten Angabe, ob eine E-Mail, ein Mobiltelefon oder eine Adresse vorhanden ist.

Ich möchte Schreiben Sie eine LINQ-Abfrage, um mir eine Anzahl von Wahrheiten für jede Spalte zu geben wie viele Zeilen in der E-Mail-Spalte auf "wahr" gesetzt sind (und dasselbe gilt für die beiden anderen Spalten)

5voto

AxelEckenberger Punkte 16238

Wenn Sie ein einzelnes Objekt benötigen, das die Ergebnisse enthält:

var result = new {
    HasEmailCount = list.Count(x => x.HasEmail),
    HasMobileCount = list.Count(x => x.HasMobile),
    HasAddressCount = list.Count(x => x.HasAddress)
};

Oder Sie verwenden die Aggregatfunktion:

class Result
{
 public int HasEmail;
 public int HasAddress;
 public int HasMobile;
}

var x = data.Aggregate(
 new Result(),
 (res, next) => {
  res.HasEmail += (next.HasEmail ? 0 : 1);
  res.HasAddress += (next.HasAddress ? 0 : 1);
  res.HasMobile += (next.HasMobile ? 0 : 1);
  return res;
 }
);

x ist vom Typ Result und enthält die aggregierten Informationen. Dies kann auch für kompliziertere Aggregationen verwendet werden.

1voto

Yuriy Faktorovich Punkte 64670
var mobileCount = myTable.Count(user => user.MobileAvailable);

Und so weiter für die anderen Zählungen.

1voto

Klaus Byskov Pedersen Punkte 111081

Sie können das so machen:

var emailCount = yourDataContext.YourTable.Count(r => r.HasEmail);

usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X