2016-06-15 18 views
1

変数を追加する際に問題があります。SQLクエリを使用してリストに入力しています。フォーム 'System.Data.Entity.Infrastructure.DbRawSQLQuery <System.Collections.Generic.IEnumerable <long>を' 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することができます:何のグループ化は、あなたもSingle()を使用することはできません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>は、結果を列挙するときにのみクエリを実行します。

List<T>Add()に追加することはできません(AddRange()まで可能です)。

だから、一度に両方を修正する:

var tillsTotal = await tillValue.ToListAsync(); 

あるいは、非非同期LINQコードを使用する:あなたが持っているので、あなたが、これはスカラー関数であることを特定している場合は

var tillsTotal = tillValue.ToList(); 

var thisTotal = tillValue.Single(); 
tillsTotal.Add(thisTotal); 
関連する問題