[英]Datatable search by LINQ to avoid duplication
我在数据表中有一个空白行的列
Column1
A
B
C
D
E
我需要设置是否存在并避免添加,但不应计算空白行。 只有包含数据的行应该在(如果存在)中。 谢谢
bool exists = dt.Select().ToList().Exists(row => row["column1"].ToString() == txtbox)
if(exists == true)
{}
else
// 它包含空白所以它变为真,我需要的是不应该包含空白行。
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()))
如果文本框为空,您希望返回false
,因此为文本框添加条件。
bool exists = !string.IsNullOrWhiteSpace(txtbox)
&& dt.Select().ToList()
.Exists(row => row["column1"].ToString() == txtbox)
顺便说一句,您可以添加对System.Data.DataTableExtensions
的引用并使用扩展AsEnumerable
,而不是使用.Select().ToList()
:
dt.AsEnumerable().Any( .....
此代码可以帮助您
from a in list where ( Column1 != null || Column1 != "")
&& Column1 == searchfield
select a
这个怎么样:非 linq 方式
bool DataTableNonEmptyCount()
{
int count =0;
foreach (DataColumn col in row.Table.Columns)
if (!row.IsNull(col))
count ++;
return count;
}
这将返回列中所有非空行的计数。
根据 Thierry 的回答,您还可以使用Any(predicate) 语法:
var existsLineWithoutEmptyString =
dt.AsEnumerable()
.Any(row => row["column1"] != null
&& row["column1"].ToString() == txtbox
&& !string.IsNullOrEmpty(row["column1"].ToString()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.