Wpf 用于填充ListBox的LINQ to SQL查询返回错误的结果
您好,这里是LINQ到SQL查询:Wpf 用于填充ListBox的LINQ to SQL查询返回错误的结果,wpf,linq-to-sql,Wpf,Linq To Sql,您好,这里是LINQ到SQL查询: private void Stk_DT_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataTable dt = new DataTable(); DataGrid grid = sender as DataGrid; #region Buttons Picking Libres using(BdC
private void Stk_DT_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataTable dt = new DataTable();
DataGrid grid = sender as DataGrid;
#region Buttons Picking Libres
using(BdCretsDataContext dc=new BdCretsDataContext())
{
var placement = (from p in dc.PICKING
where p.ART_CODE == ArtCode_TxtBox.Text
select new { p.R_PLACEMENT }).Distinct().ToList();
LB.ItemsSource = placement;
}
#endregion
}
通过这个查询,我想填写一个列表框
。但我得到的结果是:
我想要的只是:53
感谢您的帮助这是因为您在
选择新建{p.R\u PLACEMENT}
中创建了一个新的(匿名)类型。
因此,您的placement
变量将保存此新类型的列表。但是,列表框
不知道如何显示这种类型的项目
要使列表框
显示有用的内容,您必须告诉它该匿名类型的内容<代码>列表框
无法单独计算出来
最简单的解决方案可能是创建位置
,如下所示:
var placement = (from p in dc.PICKING
where p.ART_CODE == ArtCode_TxtBox.Text
select p.R_PLACEMENT.ToString()).Distinct().ToList();
(从您的示例中,我推断
R\u PLACEMENT
是某种数字类型。).ToString()
后缀使PLACEMENT
成为列表
,而列表框
将乐于正确显示。关键是选择新的{p.R\u PLACEMENT}
创建具有名为R\u PLACEMENT
的属性的对象集合。此对象的ToString()
由列表框调用,返回此对象的字符串表示形式:{R\u PLACEMENT=53}
。您必须展开或收集此属性中的值:
LB.ItemsSource = placement.Select(row => row.R_PLACEMENT);
这只返回一组值。这不是真的。你把它弄混了。您的意思是,当列表框
不知道如何对数据进行模板化时,它将在默认情况下调用数据类型的ToString()
成员。当未重写ToString()
时,它将返回完全限定的类型名。这里,正如您所说,查询创建了一个匿名类型。此类型有一个属性R\u PLACEMENT
和一个值。此匿名对象的ToString()
返回此对象的字符串表示形式:{R\u PLACEMENT=53}
。解决方案是使用Enumerable收集每行的值。选择。