LINQ to SQL查询以填充ListBox返回错误结果

时间:2019-07-10 05:28:39

标签: wpf linq-to-sql

您好,这是LINQ to 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
    }

通过此查询,我想填写一个ListBox。但是我得到了这个结果:

Resuslt

我想要的只是: 53

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

关键是YourFile.dll创建了一个对象集合,这些对象具有名为dll的属性。由select new { p.R_PLACEMENT }调用的该对象的R_PLACEMENT返回该对象的字符串表示形式:ToString()。您必须从该属性中解包或收集值:

ListBox

这仅返回的集合。

答案 1 :(得分:-1)

这是因为您在select new { p.R_PLACEMENT }中创建了一个新的(匿名)类型。 因此,您的placement变量将保存此新类型的List<>ListBox不知道如何显示这种类型的项目。

要使ListBox显示有用的内容,必须告诉它该匿名类型应该做什么。 ListBox不能自行解决。

最简单的解决方案可能是像这样创建placement

var placement = (from p in dc.PICKING
                             where p.ART_CODE == ArtCode_TxtBox.Text
                             select p.R_PLACEMENT.ToString()).Distinct().ToList();

(从您的示例中推断出R_PLACEMENT是某种数字类型。)后缀.ToString()使placement成为List<string>ListBox将成为很高兴正确显示。