我有一个 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/