Мне нужно отсортировать List<string>
, сравнив список со строкой
например: у меня есть список, содержащий следующие элементы.
Kaboki
kriiki
Kale
Kutta
Kiki
Kicki
Krishna
Kseaki
Ключевое слово поиска: ki
Мне нужно отсортировать элементы списка с помощью ключевого слова таким образом, чтобы строки, совпадающие в начале строки, были первыми, а строка, имеющая совпадающую строку в другой позиции, должна быть последней
Вот мой текущий код
public static List<string> GetLocations(string prefixText)
{
try
{
DataTable dtlocs = (DataTable) HttpContext.Current.Session["locations"];
var dValue = from row in dtlocs.AsEnumerable()
where row.Field<string>("Location_Name").ToLower().Contains(prefixText.ToLower())
select row.Field<string>("Location_Name");
var results = dValue.OrderBy(s => s.IndexOf(prefixText, StringComparison.Ordinal));
var str = new List<string>(results.ToList());
if (!str.Any())
str.Add("No locations found");
return str;
}
catch (Exception)
{
var str = new List<string> {"No locations found"};
return str;
}
}
Здесь я могу получить первые совпадающие значения вверху, но не могу отсортировать оставшиеся значения
а у меня другая проблема. есть слово King Koti
, и я ищу Ko
, и это слово приходит первым. Я думаю, это происходит потому, что строка имеет две подстроки, и одна из подстрок начинается с совпавшего слова.
и могу ли я сделать совпадающие буквы жирным шрифтом ??