2016-06-15 176 views
1

我無法添加變量我通過sql查詢填充到列表。無法將表單'System.Data.Entity.Infrastructure.DbRawSQLQuery <System.Collections.Generic.IEnumerable <long>'轉換爲'長'

List<long> TillsTotal = new List<long>(); 

string tillquery = string.Format("select Sum(Value) from valuemetrics where custid='{0} ' 
            and metricname={1} ' and date>='{2}' and date<='{3}' and tillno={4}", 
            Cust, Metric, FromDate , ToDate, till); 
var tillValue = item.Database.SqlQuery<IEnumerable<long>>(tillquery); 
TillsTotal.Add(tillValue); 

我得到的錯誤

不能在這裏我想結果添加到列表中

注意最後一行轉換形式System.Data.Entity.Infrastructure.DbRawSQLQuery<System.Collections.Generic.Ienumerable<long>long

:我正在運行的查詢返回一個數字的單個值

回答

2

我不知道這是可能的,但你可以T RY這樣的:

List<long> TillsTotal = new List<long>(); 

string tillquery = string.Format("select Sum(Value) from valuemetrics where custid='{0} ' 
           and metricname={1} ' and date>='{2}' and date<='{3}' and tillno={4}", 
           Cust, Metric, FromDate , ToDate, till); 
var tillValue = item.Database.SqlQuery<IEnumerable<long>>(tillquery).ToList(); 
TillsTotal.Add(tillValue.First()); 

tillValue始終是一個列表,不過如果你的查詢返回單個值或多個。

0

Database.SqlQuery<T>() returns a DbRawSqlQuery<T>,它只在枚舉結果時執行查詢。

您也不能將IEnumerable<T>添加到List<T>Add()(您可以通過AddRange())。

所以在一次解決這兩個:

var tillsTotal = await tillValue.ToListAsync(); 

或者,使用非異步LINQ代碼:

var tillsTotal = tillValue.ToList(); 

如果你一定認爲這是一個標量函數,既然你有沒有分組,您還可以使用Single()

var thisTotal = tillValue.Single(); 
tillsTotal.Add(thisTotal); 
相關問題