2016-05-24 8 views
2

Ich versuche, die Sql.Count zu verwenden, der Compiler ausgelöst, ein Typ Problem: Es gibt das Ergebnis mit dem Typ T, aber ich möchte einen Int oder Long-Typ.Wie benutze ich ServiceStack OrmLite Sql.Count

var UsedTimesCount = conn.Scalar<AgencyFee,int>(
    f => Sql.Count(f.Id), 
    f => f.AgencyFeeTemplateId == feeTemplate.Id 
); 

Fehle ich etwas?

Die Schnittstelle ist:

public static T Count<T> (T value); 

erwarte ich:

public static long Count<T> (T value); 

Antwort

1

Hier sind different API examples der Verwendung von Count in OrmLite:

db.Scalar<Person, int>(x => Sql.Count(x.Age), x => x.Id > 0); 

db.Count<Person>(x => x.Age < 50); 

db.Count(db.From<Person>().Where(x => x.Age < 50)); 

var q = db.From<Person>() 
      .Where(q => q.Age > 40) 
      .Select(Sql.Count("*")) 
db.Scalar<int>(q); 
+0

Danke mythz! Der 'db.Count (x => x.Age <50);' ist besser. Meine Verbindung ist abstrahiert und ohne db.Count, kann später hinzugefügt werden. –

1

ich Sql.Sum(1) die Sql.Count(f.Id) zu ersetzen verwendet:

var UsedTimesCount = conn.Scalar<AgencyFee,int>(
    f => Sql.Sum(1), 
    f => f.AgencyFeeTemplateId == feeTemplate.Id 
);