c# - 在 LINQ 中过滤冗余数据

标签 c# asp.net gridview linq-to-sql

我有一个 View 在 LNameByFName 中检索 2 个或更多相同的数据,显示相同的名称。我怎样才能只显示 1 个这些名称而不考虑其索引?

我可以使用 FirstOrDefault() 但我已经有 .ToList()

public IEnumerable<EmployeeWithEmail> GetAllEmployeesWithEmail(int x)
{
      using (var context = new SQL_TA_SCOREBOARDEntities1())
      {
        return (from ea in context.View_1
                join vh in context.View_2 on (Int16)ea.EmpNo equals vh.EmpNo
                join rl in context.View_3 on ea.RoleID equals rl.id into outer_join
                from subjoin in outer_join where ea.GroupID == x
                select new EmployeeWithEmail
                {

                    EmpNum = ea.EmpNo ?? 0,
                    Role = subjoin.Role,
                    EmailAddress = vh.EmailAddress,
                    LNameByFname = vh.LNameByFName,
                    Active2 = ea.Active ?? false

                }).ToList();

    }
}

最佳答案

如果您想使用现有的查询语法保持“组”内联,试试这个:

return (from ea in context.View_1
        join vh in context.View_2 on (Int16)ea.EmpNo equals vh.EmpNo
        join rl in context.View_3 on ea.RoleID equals rl.id into outer_join
            from subjoin in outer_join where ea.GroupID == x
        group new
        {
            ea.EmpNo,
            subjoin.Role,
            vh.EmailAddress,
            vh.LNameByFName,
            ea.Active
        } by vh.LNameByFName into grp
        let item = grp.FirstOrDefault()
        select new EmployeeWithEmail
        {
            EmpNum = item.EmpNo ?? 0,
            Role = item.Role,
            EmailAddress = item.EmailAddress,
            LNameByFname = item.LNameByFName,
            Active2 = item.Active ?? false
        }).ToList();

仅供引用,当您使用 FirstOrDefault() 时,您通常也想测试 null,例如 EmpNum = (item != null ? item. EmpNo ?? 0 : -1),。否则您可能会得到一个 NullReferenceException

但我认为在这种情况下你的保险箱......我不明白一个“组”怎么会没有至少一件元素。

关于c# - 在 LINQ 中过滤冗余数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775441/

相关文章:

c# - 使用 C# 从 MySQL 读取数据的最快方法

c# - 对于 iso 网格上的瓦片 map 画笔,算法比中点圆更好

asp.net - 获取客户端 RadGrid 选定行中单元格的值

flutter - 如何在 Flutter 的 GridView 中增加索引?

c# - C#有没有成熟的P2P框架/库?

c# - 我可以在执行存储过程之前获取行数吗?

asp.net - specflow 的 .msi 安装程序和它的 nuget 包之间有什么区别吗?

asp.net - 如何更新 asp.net 网站(只是更改了文件)

c# - 使用javascript查找放置在gridview中的复选框和文本框

javascript - 回发时 Gridview 内的下拉菜单不保留背景颜色