2015-09-04 42 views
0

我在當前的項目中使用了LINQ,但是這個查詢似乎很難在LINQ中設計,所以我決定嘗試SQLQuery。參數化的SQLQuery

​​

我曾嘗試多種方法來實現的參數,但我不斷收到不同的錯誤信息,如:>「沒有映射從對象類型System.Collections.Generic.List`1存在......到已知管理提供者本地類型「。

什麼是最常見/標準的方式來支持查詢參數?

回答

2

由於SqlQuery類的簽名是

public DbRawSqlQuery<TElement> SqlQuery<TElement>(
    string sql, 
    params object[] parameters 
) 

你的代碼是越來越轉換到相當於

Calc = db.Database.SqlQuery<TempStdDev>(query, new object[] { paramColl}).ToList(); 

更改您的代碼

Calc = db.Database.SqlQuery<TempStdDev>(query, paramColl.ToArray<object>()).ToList(); 

所以函數使用數組本身,而不是將數組放在數組的第一個插槽中。

但是,因爲函數是params所以根本不需要使用paramColl列表,只需傳遞成員自己。

Calc = db.Database.SqlQuery<TempStdDev>(query, start, end, uid).ToList(); 

附:

List<TempStdDev> Calc = new List<TempStdDev>(); 

應該只是

List<TempStdDev> Calc; 

然後創建一個新的列表,立即將其覆蓋,沒有任何理由的第一步。