2017-05-29 15 views
1

我正在使用這個插件:https://github.com/praeclarum/sqlite-net 我可以很好地插入對象列表到數據庫中。 但是,我似乎無法「獲取*從表」到列表。 我知道這個包中的內置函數。試圖在此之前我用的是:如何使用Sqlite-net軟件包將Sqlite 3中的所有行都變爲對象列表?

return (List<MyClass>)(from i in connection.Table<MyClass>() select i).ToList();

這工作就好了。但是,我現在需要創建一個手動SQL查詢。

這裏是roughtly什麼,我認爲這將是這樣的:

List<MyClass> Temp = new List<MyClass>(); 
var Result = connection.Execute("SELECT * FROM Car MyTable"); 
while (Result.HasRows()) 
{ 
    Temp.Add(Result); 
} 

回答

1

使用可以使用CreateCommandExecuteDeferredQuery得到一個懶惰的光標:

var sqlQueryEnumerable = sqlConn.CreateCommand("select * from Customer").ExecuteDeferredQuery<SomeTableClass>(); 
foreach (var row in sqlQueryEnumerable) 
{ 
    Debug.WriteLine(row.SomeColumn); 
} 

如果你需要一個List爲你的榜樣代碼顯示與IEnumerable對比,請使用ExecuteQuery

var listOfCustomers = sqlConn.CreateCommand("select * from Customer").ExecuteQuery<Customer>(); 
foreach (var listItem in listOfCustomers) 
{ 
    Debug.WriteLine(listItem.CustomerID); 
} 
+0

在ExecuteQuery ()中通用的目的是什麼?它只是扮演一個角色嗎?因爲類型如果很好,但我有多個匹配的表,它們具有與MyClass類相同的結構 –

+0

@JimLahey泛型定義了表數據的返回類型,因此每個SQL行都被轉換爲該類定義。 – SushiHangover

+0

好吧,所以它不會像'return(List )(從我在連接.Items ()select i).ToList();'只從表中獲取數據'MyClass'? –

相關問題