【问题标题】:Xamarin sql using left join for an android Tablet appXamarin sql 对 Android 平板电脑应用程序使用左连接
【发布时间】:2018-03-05 21:37:58
【问题描述】:
var db = new SQLiteConnection(dbPath);

try
{
     var results = db.Query<Xclass>("SELECT X.COL1, X.COL2, " +
         " X.COL3, X.Col4, X.Col5, " +
         " A.Col2, A.COL3, B.Col2, C.Col2 " +
         "FROM  left join Xam X " + 
         "left join TABLE1 A on X.COL1 = A.COL1 " +
         "left join TABLE2 B on X.COL2 = B.COL1 " +
         "left join TABLE3 C on X.COL3 = C.COL1 " +
         "WHERE X.COL1 ='"+ somevalue +"'");
}  
catch (Exception e)
{
 // display message
}        

XCLASS 包含所有的 getter 和 setter。 但它只提取 Xam 表,而不是 A、B 或 C 表值。 我最初在 Class 中有表名,但把它拿出来看看是否有帮助。 任何帮助表示赞赏。我正在尝试避免使用 linq,但如果有必要我会尝试。

【问题讨论】:

  • 尝试“A.COL3 as 'MyPropertyName'”
  • 不确定你的意思。是“A.COL2 作为 a_col2,A.COL3 作为 a_col3 ........”吗?
  • "A.COL2 as a_col2 , A.COL3 as a_col3 ........" 那行得通!逆天。现在在这一点上,我不得不问“为什么”,但实际上并不那么重要。非常感谢。你太棒了!
  • 我希望你现在也有关于“为什么”的答案。编程愉快!

标签: c# sqlite xamarin


【解决方案1】:

Xclass 对象的实例是根据您的查询结果通过反射创建的。 查询结果集中的列被转换为类的属性 并且这些属性的设置器用于分配它们的值。 因此,您必须向 SQlite 提供一些提示,以便它知道哪一列对应于哪个属性。这是通过as 关键字完成的。 因此,如果要将结果中 A.COL2 列的值分配给 Xclass 内名为 MyCol2Property 的属性,则必须使用语法在查询中检索它

A.Col2 as MyCol2Property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-10
    • 2015-05-26
    • 1970-01-01
    • 2012-01-19
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多