Another way is to use
Linq[
^] +
Regex.Replace method[
^].
Imagine, you did load the data into DataTable object, so you're able to split
quantity
data into
quantity
(string) and
unit
(int):
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", typeof(int)));
dt.Columns.Add(new DataColumn("product_price", typeof(int)));
dt.Columns.Add(new DataColumn("quantity", typeof(string)));
dt.Rows.Add(new Object[]{1, 500, "1Kg"});
dt.Rows.Add(new Object[]{2, 250, "500gm"});
dt.Rows.Add(new Object[]{3, 100, "12pcs"});
dt.Rows.Add(new Object[]{4, 150, "12nos"});
string patternq = @"\d+";
string patternu = @"\B[A-Z]+";
var result = dt.AsEnumerable()
.Select(x=>new
{
id = x.Field<int>("id"),
price = x.Field<int>("product_price"),
quantity = Convert.ToInt32(Regex.Replace(x.Field<string>("quantity"), patternu, string.Empty ,System.Text.RegularExpressions.RegexOptions.IgnoreCase)),
unit = Regex.Replace(x.Field<string>("quantity"), patternq, string.Empty, System.Text.RegularExpressions.RegexOptions.None)
}).ToList();
foreach(var obj in result)
{
Console.WriteLine("{0}\t{1}\t{2}\t{3}", obj.id, obj.price, obj.quantity, obj.unit);
}