列表视图中列出的选定组合框项目

时间:2015-04-08 10:12:44

标签: c# wpf linq listview combobox

我想使用LINQ to SQL在listView中列出所选的组合框项。 根据我的理解,我所拥有的编码应该可以工作,但它没有。(这个编码应该只显示列表视图中的CB项目)

string pname = cbItem.SelectedItem.ToString();
listview.ItemsSource = DC.tblProducts.Where(p => p.ProductName == pname);

我基本上想要像购物车一样制作,但只显示被选中的项目,谢谢。

1 个答案:

答案 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;