【问题标题】:convert comma separated string to list using linq使用 linq 将逗号分隔的字符串转换为列表
【发布时间】:2010-12-20 14:36:06
【问题描述】:

我有 3 个逗号分隔的字符串 FirstName, MiddleInitial, LastName

我有一堂课NameDetails:

public class NameDetails
{
    public string FirstName { get; set; }
    public string MiddleInitial { get; set; }
    public string LastName { get; set; }
}

我的字符串值为:

FirstName ="John1, John2, John3"
MiddleInitial = "K1, K2, K3"
LastName = "Kenndey1, Kenndey2, Kenndey3"

我需要用逗号分隔字符串中的值填充 NameDetails 列表。

这有什么 linq 吗?我的 asp.net mvc (C#) 应用程序需要这个。

【问题讨论】:

    标签: c# linq string


    【解决方案1】:

    我并不一定提倡这是一个好的解决方案,但它可以满足您的要求,即“在 LINQ 中执行”。

    这也可能不是最有效的解决方案。

    string FirstName ="John1, John2, John3";
    string MiddleInitial = "K1, K2, K3";
    string LastName = "Kenndey1, Kenndey2, Kenndey3";
    List<String> fn = new List<String>(FirstName.Split(','));
    List<String> mi = new List<String>(MiddleInitial.Split(','));
    List<String> ln = new List<String>(LastName.Split(','));
    
    IEnumerable<NameDetails> result = from f in fn
            join i in mi on fn.IndexOf(f) equals mi.IndexOf(i)
            join l in ln on fn.IndexOf(f) equals ln.IndexOf(l)
            select new NameDetails {f, i, l};
    

    我首先使用LINQPad 进行了尝试(使用匿名类,而不是 NameDetails 类)。

    【讨论】:

    • 你不需要 List 拆分方法创建的字符串数组和数组已经可以被 LINQ 访问
    • 这不是表明 Linq 可能不是这项工作的最佳工具吗?似乎用 for 循环替换 Linq 会更清楚。
    • 我同意,for 循环就足够了。我只是想以此为借口尝试一些 LINQ。
    • @MichaelT 没有 List IndexOf() 不可用。无论如何,我对使用它并不是很满意,但这是我能想到的第一件事:-)
    • 感谢@rohancragg。你的两个答案都对我有用。但根据你们的 cmets,我会用这个。
    【解决方案2】:

    您可以使用 Linq to CSV 库。

    【讨论】:

      【解决方案3】:

      除了我之前的回答,你也可以试试:

      // some setup
      string firstName ="John1, John2, John3";
      string middleInitial = "K1, K2, K3";
      string lastName = "Kenndey1, Kenndey2, Kenndey3";
      var fn = firstName.Split(',');
      var mi = middleInitial.Split(',');
      var ln = lastName.Split(',');
      
      // the important bit
      var s = fn.Select((f, index) => new NameDetails {f, i = mi[index], l = ln[index]});
      

      对于条目数不相等的字符串数组来说会很脆弱。

      归功于a previous answer on SO

      【讨论】:

        猜你喜欢
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 2023-04-02
        • 2014-08-24
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多