LINQ进行数据表搜索以避免重复

时间:2018-09-12 08:08:05

标签: c# linq datatable

我在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 :(得分:1)

var lignesNonContainEmptyString = dt.Select()
                   .Where(row => row["column1"] != null 
                                && row["column1"].ToString() == txtbox 
                                && !string.IsNullOrEmpty(row["column1"].ToString()))

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

OR

bool exists = dt.Select()
                       .Any(row => row["column1"] != null 
                                    && row["column1"].ToString() == txtbox 
                                    && !string.IsNullOrEmpty(row["column1"].ToString()))

答案 1 :(得分:1)

如果文本框为空,您想返回false,因此请为文本框添加条件。

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

顺便说一句,您可以使用对扩展名.Select().ToList()的引用,而不是使用System.Data.DataTableExtensions,而是使用扩展名AsEnumerable

dt.AsEnumerable().Any( .....

答案 2 :(得分:0)

此代码可以为您提供帮助

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

&& Column1 ==搜索字段 选择一个

答案 3 :(得分:0)

这个怎么样:非linq方式

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

  return count;
}

这将返回列中所有非空行的计数。

答案 4 :(得分:0)

基于Thierry的answer,您还可以使用Any(predicate) syntax

var existsLineWithoutEmptyString = 
             dt.AsEnumerable()
               .Any(row => row["column1"] != null 
                           && row["column1"].ToString() == txtbox 
                           && !string.IsNullOrEmpty(row["column1"].ToString()))