2017-02-16 17 views
0

Я знаю, как фильтровать или выбирать из datatable в C# следующим образом. (Если тип данных столбца - строка). Как следующиеDatatable select length of row value for double

Bool ReturnValue = DataTable.Select("LEN([" + ColumnName + "]) > 5").any(); 

выше код, если любой из строк, содержащих значение имеет длину больше, чем 50 символов, то это даст выход в действительности.

Я хочу сделать что-то вроде выше с двойным типом. Здесь у меня есть столбец «columnName», который имеет двойной тип данных. В этом случае выше код даст мне ошибку.

Ошибка синтаксиса в совокупном аргументе: ожидающий аргумент одного столбца с возможным квалификатором «Ребенок».

Поскольку LEN() не применяется для двойного типа. Кто-нибудь знает, как сделать то же самое для столбца с двойным типом данных. Например.

Correct: "abcdef" 
Error: "123456" 

Поскольку первый один имеет тип струн и LEN() применяется к нему, но не применимо для второго случая. потому что все числа там, поэтому тип данных столбца в datatable равен double или int32, а LEN() там не работает.

Pls помочь Спасибо

+0

Что вы подразумеваете под «длиной» двойного? –

+0

Вы должны преобразовать double в строку, чтобы получить длину. – jdweng

+0

@jdweng Как? можете ли вы привести пример? – Maharshi

ответ

0

Вы можете использовать LINQ для DataSet:

DataTable.AsEnumerable().Any(r => r.Field<double>(ColumnName).ToString().Length > 5) 

Но вычисления 'длины' двойного очень странно. Например. 10 будет иметь длину равную 2, но 1.2345 будет иметь длину, равную 6

+0

Я пробовал, но у меня есть более 50 записей lac, и AsEnumerable очень много времени, и это тайм аут-сессии. Поэтому он не может его использовать. Благодарю. любое другое решение – Maharshi

+1

@Maharshi 1) уточните, почему вам нужно проверить длину «двойной» 2), если у вас много данных, ни DataTable, ни LINQ - это хороший вариант. Потому что оба потребуют вытащить все данные в память. Вы должны делать проверки на стороне сервера –

+0

У меня есть nvarchar (50) в структуре таблицы. Потому что мне нужно добавить NONCLUSTERED INDEX в этот столбец, поэтому не могу установить его на nvarchar (max). поэтому не могу сделать это со стороны сервера – Maharshi