Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 用于填充ListBox的LINQ to SQL查询返回错误的结果_Wpf_Linq To Sql - Fatal编程技术网

Wpf 用于填充ListBox的LINQ to 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

您好,这里是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(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收集每行的值。选择