c# - 根据用户选择的复选框为多列生成 LINQ 或 Lambda 表达式

标签 c#

我的网页顶部有几个复选框,它们对应于我的表格的列。就像有一列 studentId 然后会有一个复选框 studentId 等等。我想为 List 编写这样一个 linq/lamda 表达式,它将根据选中的复选框进行过滤。例如,如果选择 studentId 和 studentType 复选框,那么 linq/lambda 表达式应该带来与选择匹配的所有行。

例子:

如果检查了 studentId 和 studentType 则:

foreach (Child c in SomeList)
{
if (chkStudentId.checked)
{
 List.FindAll (h=> h.StudentId == c.studentId);
}
if (chkStudentType.checked)
{
 List.FindAll (h => h.StudentType == c.studentType)
}
}
}

我不知道如何编写这样的代码,如果用户选择多个复选框,查询应该与所有列进行比较,并仅根据选中的复选框获取值。以上只是静态的,没有帮助。请帮忙。谢谢。

最佳答案

如果您希望您的查询是完全动态的,那么表达式树是一个很大的帮助。但是如果复选框的数量是静态的你也可以选择下面的解决方案:

var students = <your list of students>.AsQueryable();

if ( chkStudentId.checked)
{
    students = students.Where(s => s.StudentId == c.StudentId);
}

if (chkStudentType.checked))
{
    students = students.Where(s => s.StudentType== h.StudentType);
}

通过这种方式,您可以动态组合 where 子句。

关于c# - 根据用户选择的复选框为多列生成 LINQ 或 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845494/

相关文章:

c# - 发布窗口窗体中哪些文件是必需的?

c# - 如何在 C# 中不定义静态类的情况下访问 const 值?

c# - php与c#的tcp通信问题

c# - 找不到类型秒表

c# - mvc 表单例份验证重定向

c# - 有什么理由不将 pdb 与您的应用程序一起提供吗?

c# - 在 C++ 中使用 Winform 作为 View

c# - 如何创建委托(delegate)来读取匿名类型的属性?

c# - 如何在 Linq 中使用动态创建的字符串作为 WHERE 条件

c# - 您在 LoB 应用程序中使用 ServiceReferences 吗?