我想使用LINQ to SQL在listView中列出所选的组合框项。 根据我的理解,我所拥有的编码应该可以工作,但它没有。(这个编码应该只显示列表视图中的CB项目)
string pname = cbItem.SelectedItem.ToString();
listview.ItemsSource = DC.tblProducts.Where(p => p.ProductName == pname);
我基本上想要像购物车一样制作,但只显示被选中的项目,谢谢。
答案 0 :(得分:-1)
我认为你的问题在于:
listview.ItemsSource = DC.tblProducts.Where(p => p.ProductName == pname);
来自微软关于Enumerable.Where的文档,强调我的(https://msdn.microsoft.com/en-us/library/vstudio/bb534803%28v=vs.100%29.aspx):
此方法通过使用延迟执行来实现。眼前的 返回值是存储所有信息的对象 需要执行操作。 此方法表示的查询 在通过调用对象枚举对象之前不会执行 直接使用GetEnumerator方法或在Visual C#或For中使用foreach 每个都在Visual Basic中。
LINQ语句已定义但未评估,因此没有ItemsSource可以找到的值。尝试:
string pname = cbItem.SelectedItem.ToString();
var result = DC.tblProducts.Where(p => p.ProductName == pname);
var myList = new List<TblProductType>();
foreach(var v in result)
{
myList.Add(v);
}
listview.ItemsSource = myList;