【问题标题】:Using linq to separate strings where the special character is使用 linq 分隔特殊字符所在的字符串
【发布时间】:2021-07-23 19:59:23
【问题描述】:

我有一个循环遍历 sql 表中的行的 foreach 循环。 其中一列名为“用户名”,列出了用户及其位置,并用“#”分隔。

例子:

Id UserName
1 Room1 # John Smith
2 Room2 # Jane Doe

我正在尝试将位置和名称放入单独的变量中,同时排除 #。 我确信这可以用 linq 完成,但我没有成功。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 为什么选择 Linq? String.Split 将分隔字符串并创建一个包含两个值的数组。
  • 你有没有尝试过?您如何将 sql 数据映射到对象?
  • @Steve 我试过了:UserName.Split('#').Where(z => !string.IsNullOrWhiteSpace(z))。我只是在努力弄清楚如何将它们都放入单独的变量中。
  • 那行代码返回一个字符串数组。如果按照表格建议进行格式化,那么您分配给 [0] 的变量将是位置,而 [1] 将是名称

标签: c# sql linq


【解决方案1】:

如果您使用的是实体框架,它可能是这样的

public Users
{
   public int Id { get; set; }
   public string UserName { get; set; }
}

public UserViewModel 
{
   public string Room {get; set;}
   public string Name {get; set;}
}

var users = dbContext.Users.Select(user => new UserViewModel {
   Room = user.UserName.Split(new char[] { '#' }).First(),
   Name = user.UserName.Split(new char[] { '#' }).Last()
}).ToLIst();

【讨论】:

  • 请注意,如果您不修剪该字符串,则根据您的数据示例,您将有前导或结束空格
  • @ChrisBartlett 是的,你完全正确。 Trim() 应该同时应用于 RoomName 像这样 Room = user.UserName.Split(new char[] { '#' }).First().Trim()
猜你喜欢
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 2023-03-24
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多