2017-02-23 50 views
0

我正在开发一个项目来开发UWP应用程序。我已经实现了Sqlite数据库来存储有关产品的信息。我得到“System.Collections.Generic.List”而不是数据库中的数据

我的页面中有一个组合框,显示所有产品的序列号。我写的代码SelectionChanged事件组合框为:

private void InvoiceSerial_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var a = conn.Query<Product> 
      ("select brand from product where serial=?", InvoiceSerial.SelectedItem.ToString()); 
     InvoiceBrand.Text = a.ToString(); 
    } 

但不是显示品牌名称,我得到这个:

System.Collections.Generic.List`1[MyProject.Inventory+Product] 

InvoiceBrand是一个文本框

+1

列表可以包含多个。使用Product p = query.FirstOrDefault(); if(p!= null){InvoiceBrand.Text = p.brand; }' –

+0

什么是应该用ToString()方法做一个ProductList(甚至是单个产品)? – Steve

+0

您的解决方案可以工作@TimSchmelter非常感谢您! – Jestin

回答

1

好了,所以我得到它的工作多亏@TimSchmelter

现在我的代码如下所示:

private void InvoiceSerial_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var a = conn.Query<Product> 
      ("select brand from product where serial=?", InvoiceSerial.SelectedItem.ToString()); 
     Product p = a.FirstOrDefault(); 
     InvoiceBrand.Text = p.Brand; 
    } 
+1

从[Enumerable :: FirstOrDefault](https://msdn.microsoft.com/zh-cn/library/default.aspx com/en-us/library/bb340482.aspx):*“引用和可为空的类型的默认值为null”。*您的代码(与它所基于的注释不同)不处理大小写,其中'p = = null'因为这不是一般情况,所以至少应该注意,'p.Brand'可以引发一个'NullReferenceException'。 – IInspectable

+0

注意。谢谢@IInspectable – Jestin

1

您的a变量可能类型为List<MyProject.Product>,这就是为什么调用a.ToString()返回类型的字符串表示形式!

您应该做的是检索第一个元素(只需使用a[0]),然后输出“品牌”字段的值。

+0

是的你是对的。 var a类型为List 。 – Jestin

+0

我做了你说的,但是当我将[0]分配给品牌字段时,出现错误“无法将类型'MyProject.Inventory.Product'隐式转换为'字符串' – Jestin

+0

我知道,这就是我的意思,然后输出“品牌”字段的价值!无论如何,我看到你已经解决了你的问题,所以请把你的答案标记为正确!:) –

2

即使SQL查询的结果恰好是一行和一列,仍然需要任何语言的查询函数来返回完整的表,以处理结果表包含多个项目的一般情况。您要查找的对象应该是列表中的第一个对象。

相关问题