如何使用C#筛选具有多个列值的数据表

苏里亚卡维塔

我的网页上有5个控件,例如txtFirstName(文本框),txtDisplayName(文本框),txtFromDate(文本框),txtToDate(文本框)和btnFilter(按钮)。另外,我通过使用DataTable在GridView同一页面上绑定了一些数据。

现在,我想使用上面提到的这些搜索参数控件来过滤DataTable。

过滤条件是,

  • 我们不确定填充控件和空控件。因此,根据控件上输入的内容,我们需要过滤DataTable。如果控件值为空,则不应允许它们过滤Datatable。

  • 我们需要通过LIKE运算符或String.Startswith()过滤数据值

  • 如果txtFromDate和txtToDate已填充,那么我们需要过滤范围之间的数据值。

  • 如果所有控件都已填充,则我们需要根据日期范围内的所有过滤器参数对数据表进行过滤。

我们如何实现这种过滤?请帮助我成功实施此操作。我们可以通过LINQ或Lamda表达式来做到这一点吗?如果是这样,请告诉我建议。

我尝试了两种方法,但是没有用,

第一种方式:

var test=dtActions.AsEnumerable().Where(z=>
    !string.IsNullOrEmpty(txtFirstName.Text)? z.Field<string>("FirstName").ToUpper().StartsWith(txtFirstName.Text.ToUpper()) &&
    !string.IsNullOrEmpty(txtDisplayName.Text)?z.Field<string>("DisplayName").ToUpper().StartsWith(txtDisplayName.Text.ToUpper()) &&
    !string.IsNullOrEmpty(txtCreatedBy.Text)?z.Field<string>("CreatedBy").ToUpper().StartsWith(txtCreatedBy.Text.ToUpper());

我不知道在DateTime文本框之间获取数据。

第二种方式:

var results = from dataRow in dtActions.AsEnumerable()
    where dataRow.Field<string>("FirstName").ToUpper().StartsWith(txtFirstName.Text.ToUpper()) ||
        dataRow.Field<string>("DisplayName").ToUpper().StartsWith(txtFirstName.Text.ToUpper()) ||  
        ((dataRow.Field<DateTime>("CreatedDate")>= Convert.ToDateTime(txtFromDate.Text)) && (dataRow.Field<DateTime>("CreatedDate")<= Convert.ToDateTime(txtToDate.Text)))
    select dataRow;
德吉什·乔杜里(Durgesh Chaudhary)

以下代码有效:

var test = dtActions.AsEnumerable().Where(z =>
    (string.IsNullOrEmpty(txtFirstName.Text) ? true : z.Field<string>("FirstName").ToUpper().StartsWith(txtFirstName.Text.ToUpper())) &&
    (string.IsNullOrEmpty(txtDisplayName.Text) ? true : z.Field<string>("DisplayName").ToUpper().StartsWith(txtDisplayName.Text.ToUpper())) &&
    (string.IsNullOrEmpty(txtCreatedBy.Text) ? true : z.Field<string>("CreatedBy").ToUpper().StartsWith(txtCreatedBy.Text.ToUpper()))
);

您的第二个查询

var results = from dataRow in dtActions.AsEnumerable()
        where (string.IsNullOrEmpty(txtFirstName.Text) ? true : dataRow.Field<string>("FirstName").ToUpper().StartsWith(txtFirstName.Text.ToUpper())) ||
            (string.IsNullOrEmpty(txtDisplayName.Text) ? true : dataRow.Field<string>("DisplayName").ToUpper().StartsWith(txtDisplayName.Text.ToUpper())) ||
            (string.IsNullOrEmpty(txtCreatedBy.Text) ? true : dataRow.Field<string>("CreatedBy").ToUpper().StartsWith(txtCreatedBy.Text.ToUpper())) ||
            (dataRow.Field<DateTime>("CreatedDate") >= Convert.ToDateTime(txtFromDate.Text) && (dataRow.Field<DateTime>("CreatedDate") <= Convert.ToDateTime(txtToDate.Text)))
        select dataRow;

您的代码不起作用的原因是不正确的条件运算符。如果string为null或为空,则返回true,否则我们检查字段值。

应用ToList()如果你想在年底列表或ToArray()如果你想把它当作一个数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从其他数据表创建具有列结构的新数据表?

来自分类Dev

如何从C#中的数据表中获取特定的列值

来自分类Dev

具有多个按变量分组的数据表操作

来自分类Dev

C#检查所有数据表值中的空值或空值

来自分类Dev

如何在C#中获取数据表中的列的值?

来自分类Dev

具有动态列的数据表

来自分类Dev

如何使用rbind合并具有POSIXct和Date列类的数据表?

来自分类Dev

具有多个值列的数据透视/交叉表

来自分类Dev

如何在C#中使用RowFilter筛选对象中的每个项目的数据表

来自分类Dev

使用Python BeautifulSoup从具有多个相同名称表的特定页面提取数据表

来自分类Dev

如何在C#中使用Linq方法语法检索具有相同外键ID的多个列值?

来自分类Dev

数据表搜索功能不会筛选多个值的表

来自分类Dev

搜索具有多个值的数据表不返回完全匹配

来自分类Dev

如何从其他数据表创建具有列结构的新数据表?

来自分类Dev

使用数组C#中的值过滤数据表

来自分类Dev

如何使用Linq从数据表中获取列值

来自分类Dev

C#向具有自动增量列的数据表添加行

来自分类Dev

检查数据表是否还有另一个数据表值-C#

来自分类Dev

C#检查所有数据表值中的空值或空值

来自分类Dev

如何在C#中从具有两列的另一数据表中获取一个具有两列的数据表

来自分类Dev

具有多个键(列)和多个值的C#过滤数据表

来自分类Dev

如何使用rbind合并具有POSIXct和Date列类的数据表?

来自分类Dev

如何在C#中使用RowFilter筛选对象中的每个项目的数据表

来自分类Dev

如何检查C#中的数据表中的列值是否为null?

来自分类Dev

如何使用LINQ在具有多个条件的数据表中的日期之间求和?

来自分类Dev

当数据表具有不同的列时,使用 linq 查找数据表中的差异

来自分类Dev

如何使用 C# 数据表获得所需的输出

来自分类Dev

如何在两个数据表之间提取具有特定列和值的行?

来自分类Dev

如何在具有两列的数据表中显示多个结果?

Related 相关文章

  1. 1

    如何从其他数据表创建具有列结构的新数据表?

  2. 2

    如何从C#中的数据表中获取特定的列值

  3. 3

    具有多个按变量分组的数据表操作

  4. 4

    C#检查所有数据表值中的空值或空值

  5. 5

    如何在C#中获取数据表中的列的值?

  6. 6

    具有动态列的数据表

  7. 7

    如何使用rbind合并具有POSIXct和Date列类的数据表?

  8. 8

    具有多个值列的数据透视/交叉表

  9. 9

    如何在C#中使用RowFilter筛选对象中的每个项目的数据表

  10. 10

    使用Python BeautifulSoup从具有多个相同名称表的特定页面提取数据表

  11. 11

    如何在C#中使用Linq方法语法检索具有相同外键ID的多个列值?

  12. 12

    数据表搜索功能不会筛选多个值的表

  13. 13

    搜索具有多个值的数据表不返回完全匹配

  14. 14

    如何从其他数据表创建具有列结构的新数据表?

  15. 15

    使用数组C#中的值过滤数据表

  16. 16

    如何使用Linq从数据表中获取列值

  17. 17

    C#向具有自动增量列的数据表添加行

  18. 18

    检查数据表是否还有另一个数据表值-C#

  19. 19

    C#检查所有数据表值中的空值或空值

  20. 20

    如何在C#中从具有两列的另一数据表中获取一个具有两列的数据表

  21. 21

    具有多个键(列)和多个值的C#过滤数据表

  22. 22

    如何使用rbind合并具有POSIXct和Date列类的数据表?

  23. 23

    如何在C#中使用RowFilter筛选对象中的每个项目的数据表

  24. 24

    如何检查C#中的数据表中的列值是否为null?

  25. 25

    如何使用LINQ在具有多个条件的数据表中的日期之间求和?

  26. 26

    当数据表具有不同的列时,使用 linq 查找数据表中的差异

  27. 27

    如何使用 C# 数据表获得所需的输出

  28. 28

    如何在两个数据表之间提取具有特定列和值的行?

  29. 29

    如何在具有两列的数据表中显示多个结果?

热门标签

归档