CSHTML / SQL SUM для строки - PullRequest
0 голосов
/ 21 июля 2011

Я знаю в mysql SUM (размер), но по какой-то причине построение этого в бритвенном cshtml не то же самое, и я не могу найти нигде, где говорится о добавлении или вычитании 2 чисел в cshtml. Так что же будет правильной функцией для добавления размера строк?

Код:

@{
    Page.Title = "Home @";
    var PageTitle = "Home";

    var db = Database.Open("PhotoGallery");
    var shows = db.Query(@"SELECT * FROM Shows").ToList();
    var seasons = db.Query(@"SELECT * FROM Seasons").ToList();
    var episodes = db.Query(@"SELECT * FROM Episodes").ToList();
    var comics = db.Query(@"SELECT * FROM Comics").ToList();
    var artists = db.Query(@"SELECT * FROM Artists").ToList();
    var albums = db.Query(@"SELECT * FROM Albums").ToList();
    var comicsize = db.Query(@"SELECT SUM(size) FROM Comics").ToList();   
    var totalsizeb = comicsize;
}

<h1>@PageTitle</h1>
<p align="center">
    @shows.Count TV Shows | @seasons.Count Seasons | @episodes.Count Episodes | @comics.Count Comics | @artists.Count Artists | @albums.Count Albums<br />
     Bytes |  MB |  GB |  TB
</p>

Ошибка:

Exception Details: System.Data.SqlServerCe.SqlCeException: The specified argument value for the
function is not valid. [ Argument # = 1,Name of function(if known) = SUM ]

1 Ответ

1 голос
/ 21 июля 2011

Если вас интересует только Count каждой таблицы, тогда вам нужно SELECT COUNT(*) FROM Shows и т. Д., А не извлекать все данные из каждой таблицы только для подсчета.

@{
    Page.Title = "Home @";
    var PageTitle = "Home";

    var db = Database.Open("PhotoGallery");
    var shows = (int)db.QueryValue(@"SELECT Count(*) FROM Shows");
    var seasons = (int)db.QueryValue(@"SELECT Count(*) FROM Seasons");
    var episodes = (int)db.QueryValue(@"SELECT Count(*) FROM Episodes");
    var comics = (int)db.QueryValue(@"SELECT Count(*) FROM Comics");
    var artists = (int)db.QueryValue(@"SELECT Count(*) FROM Artists");
    var albums = (int)db.QueryValue(@"SELECT Count(*) FROM Albums");
    var comicsize = (int)db.QueryValue(@"SELECT SUM(size) FROM Comics");   
    var totalsizeb = comicsize;
}

<h1>@PageTitle</h1>
<p align="center">
    @shows TV Shows | @seasons Seasons | @episodes Episodes | @comics Comics | @artists Artists | @albums Albums<br />
      Bytes |  MB |  GB |  TB
</p>

SUM работает только с числовыми типами, такими как int, numeric, money и float, убедитесь, что столбец относится к одному из этих типов в вашей таблице.

...