【问题标题】:Accessing complex object properties in a class initializer C# WPF在类初始值设定项 C# WPF 中访问复杂对象属性
【发布时间】:2015-05-07 08:16:01
【问题描述】:

我正在尝试显示我的tblSysproStock 表中的数据并将其显示在数据网格中。表中的某些列数据类型是浮点数

这是我想如何在我的数据网格中加载数据的代码 sn-p:

    private void FillSysproDataGrid()
    {
        using (DataClassesDataContext DC = new DataClassesDataContext())
        {
            dgSysproStock.ItemsSource = DC.tblSysproStocks.Where<tblSysproStock>(c => c.StockID != null)
                .Select<tblSysproStock, SSData>(m => new SSData()
                {
                    SID = m.StockID,
                    SCode = m.StockCode,
                    SDescription = m.StockDescription,
                    SConvFactAltUom = (float)m.ConvFactAltUom, //-- Here is the problem
                    ...
                });                
        }
    }

我使用的类:

public struct SSData
{
    public string _ss;

    public int SID { get; set; }
    public string SCode { get; set; }
    public string SDescription { get; set; }
    public float SConvFactAltUom { get; set; }
    ...
}

现在我得到的错误是 -

空值不能分配给 System.Single 类型的成员 这是一个不可为空的值类型。

现在我不知道如何使用代码访问复杂对象的属性,我必须在 datagrid 中显示我的数据。如果有人可以提供帮助,我将非常感激。谢谢!

【问题讨论】:

    标签: c# wpf linq datagrid


    【解决方案1】:

    这里的问题是您将null 值分配给float,它不是可空类型(请参阅Nullable Types)。

    使用float? 或更改分配值的方式,以便处理null 的情况。

    【讨论】:

    • 感谢您的评论!我是编码的新手,所以我真的不知道如何实现“浮点数?”在我的编码中。我尝试用SConvFactAltUom = (float?)m.ConvFactAltUom, 替换SConvFactAltUom = (float)m.ConvFactAltUom,,但它给了我错误:无法隐式转换类型'float?' '浮动'?
    • SSData 中的类型从public float SConvFactAltUom 更改为public float? SConvFactAltUom
    • 做到了!非常感谢
    猜你喜欢
    • 2016-12-27
    • 1970-01-01
    • 2012-08-05
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多