2015-06-12 21 views
2

我必须在sqllite db中运行sql查询并获取匿名结果。 我写了下面的代码。通过在Sqllite数据库中为windows phone创建匿名类型列表

var userlist = new List <user_tbl>(); 
    var userlogin = new List <user_login_history>(); 
    string json = string.Empty; 
    using(var dbConn = new SQLiteConnection(DB_PATH)) { 
    userlist = dbConn.Query <user_tbl> ("select * from user_tbl"); 
    userlogin = dbConn.Query <user_login_history> ("select * from user_login_history"); 
    var listcom = (from n in userlist join ul in userlogin on n.id equals ul.UserID select new { 
     n.name, ul.LoginTime 
    }).ToList(); 
    json = JsonConvert.SerializeObject(listcom[listcom.Count - 1]); 
} 

现在我想写在SQL连接查询和获取的对象匿名列表后面。

我试图与

var templist = (from n in dbConn.Query<object>("select a.name, 
               b.LoginTime  
               from user_tbl a inner join user_login_history b on a.id=b.UserID") 
       select new 
         { 
         n.name, 
         n.LoginTime 
         }).ToList() 
这是不执行

。有人能帮我解决这个问题吗? 我为此使用Sqlite。

我不能用一个新的类,每次查询(连接)

+0

什么是“不执行”?错误,例外,不正确的结果? – artm

+0

当我用对象查询(下面的代码) – tuhin

回答

1

创建一个模型类为您的方面如下您选择字段:

public class YourModelClass 
{ 
    private string _Name; 
    public string Name 
    { 
     get { return _Name; } 
     set 
     { 
      _Name = value; 
     } 
    } 

    private string _LoginTime; 
    public string LoginTime 
    { 
     get { return _LoginTime; } 
     set 
     { 
      _LoginTime = value; 
     } 
    } 
} 

然后下面的代码尖晶石,用于获取数据:你的愿望曲

using (var db = new SQLite.SQLiteConnection(connection string)) 
{ 
    string query = "select a.name AS Name, b.LoginTime AS LoginTime from user_tbl a inner join user_login_history b on a.id=b.UserID"; 
    SQLiteCommand cmd = new SQLiteCommand(db); 
    cmd.CommandText = query.ToString(); 
    var result = cmd.ExecuteQuery<YourModelClass>(); 
} 

VAR结果最终获取的结果红霉素。

希望这对你有所帮助。

+0

我编辑了我的问题。请看看编辑过的问题。 – tuhin

+0

@tuhin我已经提供了类似这样的内容...您已经为您的特定屏幕或您的操作生成了一般模型类...在我的示例中,如果需要,它可能有更多的属性 –

+0

是否有机会获得列表而不创建任何模型?我的意思是像你做的“YourModelClass”? – tuhin