Получить записи, которые не начинаются с алфавитного символа в linq - PullRequest
2 голосов
/ 20 апреля 2010

Мне нужно получить список записей, которые не начинаются с алфавитного символа, т. Е. Который начинается с числового символа или любого специального символа.

Что за простой запрос LINQ, чтобы получить этот список?

Ответы [ 4 ]

4 голосов
/ 20 апреля 2010
List<string> Entries = new List<string>();
Entries.Add("foo");
Entries.Add("bar");
Entries.Add("@foo");
Entries.Add("1bar");

var NonAlphas = (from n in Entries
where !char.IsLetter(n.ToCharArray().First())
select n);

Для Linq-to-sql вы можете гидрировать ваш поиск из базы данных, перечислив запрос (вызов ToList). С этого момента ваши операции будут выполняться с объектами в памяти, и эти операции не будут переведены в SQL.

List<string> Entries = dbContext.Entry.Where(n => n.EntryName).ToList();
var NonAlphas = Entries.Where(n => !char.IsLetter(n.First()));
3 голосов
/ 20 апреля 2010

Как то так?

List<string> lst = new List<string>();
lst.Add("first");
lst.Add("second");
lst.Add("third");
lst.Add("2abc");

var result = from i in lst where !char.IsLetter(i[0]) select i; 
List<string> output = result.ToList();

Редактировать: я понял, что использование Regex здесь излишне, и мое решение все равно не было идеальным.

0 голосов
/ 20 апреля 2010

Следует отметить, что вам не нужно преобразовывать строку в chararray, чтобы использовать в ней linq.

Более краткая версия будет:

var list = new List<string> {"first","third","second","2abc"};

var result = list.Where(word => !char.IsLetter(word.First())); 
0 голосов
/ 20 апреля 2010
string[] x = new string[3];
x[0] = "avb";
x[1] = "31df";
x[2] = "%dfg";     

var linq = from s in x where !char.IsLetter(s.ToString().First()) select s;
List<string> simplelist = new List<string>(linq);
/* in simple list you have only "31df" & "dfg" */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...