LINQ 从类返回属性

Posted

技术标签:

【中文标题】LINQ 从类返回属性【英文标题】:LINQ To Return Properties from a class 【发布时间】:2020-07-20 13:37:54 【问题描述】:

首先,XAML 和一般编程的新手。我正在尝试在 .cs 文件中填充 XAML 数据网格。

我使用的每个 SQL 表都有类,包含引用列的属性

    public partial class TTDepartment
    
        public TTDepartment()
        
            this.TTEventLogs = new HashSet<TTEventLog>();
            this.TTUserDepartments = new HashSet<TTUserDepartment>();
        

        public string Department  get; set; 
        public string Manager  get; set; 
        public string ManagerEmail  get; set; 

        public virtual ICollection<TTEventLog> TTEventLogs  get; set; 
        public virtual ICollection<TTUserDepartment> TTUserDepartments  get; set; 
    

我目前正在做的是尝试在我的类上使用 LINQ 查询来检索数据,就像这样

(我知道可能有更好的方法来做到这一点)请帮助

        private void GetDepartments()
        

            using (var context = new CetusEntities())// New instance of Database class
            
                var linqDept = context.TTDepartments.Where(s => s.Department != "" || s.Department != null); // Should return All Departments from TTDepartments Class?
                //Populate colDept in Datagrid with results from LINQ
             
        

这是 Datagrid 的 XAML

                <DataGrid x:Name="dgDept"  Height="200">
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="colDept" Binding="Binding Source = StaticResource Department" Header="Department"></DataGridTextColumn>
                        <DataGridTextColumn x:Name="colMan" Binding="Binding Source = StaticResource Department" Header="Manager"></DataGridTextColumn>
                        <!--<DataGridTextColumn Header="Email"></DataGridTextColumn>-->
                    </DataGrid.Columns>
                </DataGrid>

【问题讨论】:

这不起作用还是什么?更好的方法是什么意思? var linqDept 没有返回我想要访问的属性 请看我的回答。 我测试了你的 LINQ 查询,发现它仍然返回为空或 null 的部门,你有同样的问题吗?如果你用var linqDept = TTDepartments.Where(x =&gt; !string.IsNullOrEmpty(x.Department));这个方法来排除Department属性为空或者null值的,能行吗? 【参考方案1】:

您的查询应如下所示:

var linqDept = context.TTDepartments.Where(s =>(!string.IsNullOrEmpty(s)));

另外,请确认您的数据库中确实有数据。然后调试

//设置要测试的数据网格源。

dtGrid.ItemsSource = linqDept;

XAML 示例:

<DataGridTextColumn x:Name="colDept" Binding="Binding Department" Header="Department"></DataGridTextColumn>

【讨论】:

好的,需要改写,问题不是最好的。结果是否为空都没有关系,我只想从我的 SQL 表中返回整个列 Departments(没有空值)...... != 只是我用来实现这一目标的逻辑。因此,我说必须有更好的方法来使用 LINQ 访问 TTDepartment.Department。感谢您的宝贵时间

以上是关于LINQ 从类返回属性的主要内容,如果未能解决你的问题,请参考以下文章

从类对象继承属性的类对象的python dict

python中利用少量代码快速实现从类对象中抽取所需属性的一种实践

使用 linq 返回对象的特定属性列表

LINQ 表达式返回属性值?

Linq 查询以返回具有特定属性值的嵌套数组

为啥从类和实例中获取属性的查找过程不同?