using System;
using System.Collections.Generic;
using System.Linq;
namespace Scratchpad
{
public class OrderItem
public static readonly OrderItem Null = new OrderItem();
public const string PrefixDesc = "-";
public bool IsDesc { get; set; } = false;
public string Name { get; set; } = string.Empty;
public override string ToString()
if (IsDesc)
return PrefixDesc + Name;
}
return Name;
public static OrderItem FromString(string name)
bool isDesc = name.StartsWith(PrefixDesc);
if (isDesc)
name = name.Substring(PrefixDesc.Length);
if (string.IsNullOrWhiteSpace(name))
return Null;
return new OrderItem
Name = name,
IsDesc = isDesc
};
internal class Program
public static void Main()
string input = "hello,,world,-,-testdesc";
IEnumerable<OrderItem> result = ParseSortBy(input);
// Breakpoint here.
Console.WriteLine(result);
private static IEnumerable<OrderItem> ParseSortBy(string qs)
return qs
.Split(',', System.StringSplitOptions.RemoveEmptyEntries)
.Select(part => OrderItem.FromString(part))
.Where(item => item != OrderItem.Null);