在匿名类型的foreach循环中C#拆分逗号分隔的字符串

时间:2015-08-25 17:11:30

标签: c# parsing foreach split

我试图将产品的标题从Nitric Acid 70% , ACS REAGENT GRADE, 2.5 Liter(7 Lbs) Bottle分割为Nitric Acid 70%。在我的代码中,我首先加入了两个以客户名称为关键字的集合。然后我在类扩展列表上做了一个foreach循环,并添加了来自客户和产品的成员。但是,在Title = record.Title,中,我不希望完整的标题名称只是第一个逗号之前的第一个字符串。我怎样才能做到这一点?我试图使用.split,但我认为我没有正确理解它

private static IEnumerable<SpreadList> Combine(IEnumerable<Address> addresses, IEnumerable<Address> products)
{

    var customersandproducts = addresses.Select(x => new { x.Name, x.AddressLine1, x.AddressLine2, x.City, x.State, x.S_OrderId, x.PostalCode })
                                    .Join(products, custs => custs.S_OrderId, prod => prod.P_OrderId,
                                        (custs, prod) => new { custs.Name, prod.Title, prod.ShippingPrice, prod.ItemPrice, prod.Quantity });

    var records = new List<SpreadList>();

    foreach (var record in customersandproducts)
    {
        records.Add(new SpreadList()
        {
            Name = WebUtility.HtmlDecode(record.Name),
            Title = record.Title,
            ItemPrice = record.ItemPrice,
            ShippingPrice = record.ShippingPrice,
            Quantity = record.Quantity,
        });

    }
    return records;
}

public class SpreadList
{
    public string Name { get; set; }
    public string Title { get; set; }
    public string ShippingPrice { get; set; }
    public string ItemPrice { get; set; }
    public string Quantity { get; set; }
}

3 个答案:

答案 0 :(得分:1)

使用split是正确的 - split将在指定的分隔符之间创建一个子字符串数组,您所要做的就是获取该数组中的第一个项目。

Title = record.Title.Split(',')[0].Trim();

答案 1 :(得分:1)

我写了一点功能。这可以是命名函数,也可以只是Func<string, string>

Func<string, string> GetFirstStringPart = title => 
   {
      if(string.IsNullOrEmpty(title))
          return null;  // or string.Empty;
      string[] stringParts = title.Split(',');
      if(stringParts.Any())
          return stringParts.First().Trim();
      else
          return null;  // or string.Empty;
  };

 foreach (var record in customersandproducts)
 {
     records.Add(new SpreadList()
     {
         Name = WebUtility.HtmlDecode(record.Name),
         Title = GetFirstStringPart(record.Title),
         ...
         . etc .                

使用函数的优点是可以处理任何需要单独处理的特殊情况,例如空字符串或空字符串,或者您可能需要的任何其他逻辑。

答案 2 :(得分:0)

来自https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx

  

返回一个字符串数组,该数组包含此实例中由指定字符串或Unicode字符数组的元素分隔的子字符串。

因此,如果你想要字符串的第一部分,你可以使用string result = record.Title.split(',')[0]

相关问题