string s = "A,B,C";
string replaced = "'"+s.Replace(",", "','")+"'";
спасибо за комментарии, я пропустил внешние кавычки.
, Конечно.. если бы источник был пустой строкой, Вы хотели бы дополнительные кавычки вокруг этого или нет? И что, если вход был набором пробелов...? Я имею в виду, для предоставления 100%-го полного решения, которое я, вероятно, попросил бы списка модульных тестов, но я надеюсь, что мой инстинкт пищеварительного тракта ответил базовый вопрос.
Обновление : основанная на LINQ альтернатива была также предложена (с дополнительным преимуществом использования Строки. Формат и поэтому не имеющий необходимость волноваться о продвижении/запаздывании кавычек):
string list = "Fred,Sam,Mike,Sarah";
string newList = string.Join(",", list.Split(',').Select(x => string.Format("'{0}'", x)).ToList());
Используйте IEnumerable
.Cast :
IList<Vehicle> vehicles = cars.Cast<Vehicle>().ToList();
В качестве альтернативы вы можете избежать преобразования в список в зависимости от вашего желания для обработки исходного списка автомобилей.
Вы столкнулись с проблемой ограниченной ко- и контравариантности в C #. В C # 4.0 есть интересный подход, описанный здесь, в самом конце . Однако это создает некоторые другие ограничения, связанные с проблемой грузовика в ответе Novelocrat.
Такой полиморфизм, который позволяет вам приводить IList
на IList
небезопасно, потому что это позволит вам вставить Truck
в ваш IList
.
Вот несколько подходов с использованием Linq:
IList<Derived> list = new List<Derived>();
list.Add(new Derived());
IList<Base> otherlist = new List<Base>(from item in list select item as Base);
IList<Base> otherlist2 = new List<Base>(list.Select(item => item as Base));
Вы также можете взглянуть на статью Кшиштофа Cwalina, Simulated Covariance for .NET Generics