c# - 使用类中的一个变量将输出列表输出到数组

标签 c# asp.net list

我正在玩列表以更好地理解它们。我可以将特定类变量输出到列表选择以压缩以下代码吗?

这是我认为应该可行的 (DB.OperationsTeam.(仅从 POPSUser 类中选择 UserEmail 变量))

private string OperationsMembers
{
    get
    {
        List<POPSUser> UniqueList = DB.OperationsTeam.UserEmail.Distinct().ToList();
        return string.Join(";", UniqueList);
    }
}

预期输出:adam@my.domain; carol@my.domain; bill@my.domain

这是当前的工作代码,但我认为我不需要创建另一个列表并使用 foreach 循环。我使用 Distinct() 是因为有些用户会在数据库查询中处于多个部门。

private string OperationsMembers
{
    get
    {
        List<string> EmailAddressList = new List<string>();

        foreach (POPSUser user in DB.OperationsTeam)
        {
            EmailAddressList.Add(user.UserEmail);
        }

        if (EmailAddressList.Count > 0)
        {
            List<string> UniqueList = EmailAddressList.Distinct().ToList();
            return string.Join(";", UniqueList);
        }
        else { return ""; }
    }
}

DB.OperationsTeam 是一个包含 UserID、UserName、UserEmail 等的 POPSUser 列表。

** 在有帮助的评论后更新(不知道还有什么地方可以发布有用的答案)* 漂亮、干净、紧凑,谢谢大家!

private string OperationsMembers
{
    get
    {
        return string.Join(";", DB.OperationsTeam.Select(u => u.UserEmail).Distinct());
    }
}

最佳答案

我认为您应该将您的 POPSUser 实体投影到电子邮件字符串。使用 Select投影运算符:

DB.OperationsTeam.Select(u => u.UserEmail).Distinct();

旁注:您当前的工作解决方案将从数据库加载整个用户数据(即姓名、电子邮件、ID 等),并在您枚举 OperationsTeam 集时实例化用户实例。但是当你像上面那样进行投影时,它会发生在服务器端,并且会生成只加载必填字段的 SQL:

SELECT DISTINCT
   [Extent1].[UserEmail] AS [UserEmail]
FROM [dbo].[OperationsTeam] AS [Extent1]

关于c# - 使用类中的一个变量将输出列表输出到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122047/

相关文章:

c# - 如何获取计算机描述?

c# - 在非 IE 浏览器中禁用 ASP.NET ImageButton

c# - 创建包时找不到文件

python - 从字典 python 中创建所有可能的句子

c# - 如何在 Selenium Webdriver 中处理 shadow dom

c# - 尝试将 LOX 语言实现从 Crafting Interpreter 的书中移植到 C# 时遇到泛型问题

.net - "Must Know".NET Architect/Lead 的 IIS 功能

perl - 为什么这里的 STDIN 在列表上下文中工作?

c++ - 列表迭代器删除 "Debug assertion failed"

c# - 有没有办法将环境变量传递给 Visual Studio 项目并在 C# 中使用它?