2017-05-29 45 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'? –

相关问题