Поиск данных по LINQ, чтобы избежать дублирования - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть столбец в dataTable с пустыми строками

Column1
A
B
C

D

E

Мне нужно установить, если существует, и избегать добавления, но пустые строки не должны учитываться. Только строки с данными должны быть в (если существует). Спасибо

 bool exists = dt.Select().ToList().Exists(row => row["column1"].ToString() == txtbox)



if(exists == true)
{}
else

// он содержит пустое значение, поэтому он принимает значение true, что мне нужно, если пустые строки не должны быть включены.

Ответы [ 5 ]

0 голосов
/ 12 сентября 2018

На основе ответа Тьерри вы также можете использовать синтаксис Любой (предикат) :

var existsLineWithoutEmptyString = 
             dt.AsEnumerable()
               .Any(row => row["column1"] != null 
                           && row["column1"].ToString() == txtbox 
                           && !string.IsNullOrEmpty(row["column1"].ToString()))
0 голосов
/ 12 сентября 2018

Вы хотели бы вернуть false, если текстовое поле пустое, поэтому добавьте условие для текстового поля.

bool exists = !string.IsNullOrWhiteSpace(txtbox)
              && dt.Select().ToList()
                   .Exists(row => row["column1"].ToString() == txtbox)

Кстати, вместо использования .Select().ToList(), вы можете добавить ссылкуSystem.Data.DataTableExtensions и использовать расширение AsEnumerable:

dt.AsEnumerable().Any( .....
0 голосов
/ 12 сентября 2018
var lignesNonContainEmptyString = dt.Select()
                   .Where(row => row["column1"] != null 
                                && row["column1"].ToString() == txtbox 
                                && !string.IsNullOrEmpty(row["column1"].ToString()))

bool exists = lignes.Count() != 0;

ИЛИ

bool exists = dt.Select()
                       .Any(row => row["column1"] != null 
                                    && row["column1"].ToString() == txtbox 
                                    && !string.IsNullOrEmpty(row["column1"].ToString()))
0 голосов
/ 12 сентября 2018

Как насчет этого: non linq way

bool DataTableNonEmptyCount()
{
int count =0;
foreach (DataColumn col in row.Table.Columns)
    if (!row.IsNull(col))
      count ++;

  return count;
}

Это вернет счетчик всех ненулевых строк в столбце.

0 голосов
/ 12 сентября 2018

этот код может вам помочь

from a in list where ( Column1!=null || Column1!="")

&& Column1 == поле поиска выберите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...