【问题标题】:C# LINQ - Loop through list to get DataC# LINQ - 遍历列表以获取数据
【发布时间】:2023-02-10 02:42:47
【问题描述】:

你能告诉我如何将带电子邮件地址 (abc@aa.com, def@ab.com, ghi@ac.com,...) 的逗号分隔字符串放入 LINQ 列表,然后遍历每个电子邮件地址并转到 SQL 数据库以获取姓名、地址、电话号码并将这些返回。下面的电子邮件列表包含abc@aa.comdef@ab.comghi@ac.com、..

public class PersonalInfo
{
   public string firstname {get; set;}
   public string lastname {get; set;}
   public string address {get; set;}
   public string phonenumber {get; set;}
}

public PersonalInfo GetInfo(string EmailList)
{
    ....
}

我可以完成从 SQL 表中获取信息的部分。只需要帮助循环遍历电子邮件列表,调用方法获取数据,然后将数据返回给个人信息。

【问题讨论】:

  • 由于 GetInfo() 接受电子邮件地址列表,返回类型是否应该是 PersonalInfo 对象的集合而不是一个?

标签: linq model webapi


【解决方案1】:

当你有一个字符串,你想在一个特定的字符上分开时,你可以使用 Split() 方法。需要注意的是,如果您没有明确的定界字符,则可能会拆分您不打算拆分的内容。逗号在电子邮件地址中不常见,所以这应该没问题。 Split() 方法将返回一个字符串数组。

下一个警告是“abc@aa.com, def@ab.com”将在第二个电子邮件地址的“def”之前留下一个空格字符。要删除这些,您可以使用字符串的 Trim() 方法。 Trim() 将从字符串的开头和结尾删除空格。 Trim() 是非破坏性的,因此您需要存储结果。

下面的方法使用 split 来获取一个数组,每个条目都是一个电子邮件地址。然后使用Select()linq 方法迭代每个电子邮件地址并返回 Trim() 结果。现在 emails 变量是一个 IEnumerable<string> ,每个字符串都是可用于进行数据库查找的电子邮件。我将函数的返回类型更改为 List<PersonalInfo>,因为我假设您想要查找每个人并返回所有结果。

public List<PersonalInfo> GetInfo(string EmailList)
{
    List<PersonalInfo> output = new();
    var emails = EmailLIst.Split(',').Select(x => x.Trim());

    foreach (var email in emails)
    {
        // table lookup
        PersonalInfo info = GetFromTable(email);
        output.Add(info);
    }
    return output;
}

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多