C# 可选Linq查询

C# 可选Linq查询,c#,winforms,linq,C#,Winforms,Linq,我有一个带有一些复选框和文本框的表单,我想做什么: 当用户选择一个复选框并写入一些文本时,linq查询必须执行并只搜索选定的复选框 例如: 如果用户检查lastname和tell,并在文本框中输入数据,则查询仅检索所选数据,如果用户也检查average,则查询也会执行该操作,并返回3个join(例如) LINQ查询是惰性的,在请求结果之前不会执行,因此您可以执行以下操作: var source = GetSourceCollection(); var query = source; if(F

我有一个带有一些复选框和文本框的表单,我想做什么:
当用户选择一个复选框并写入一些文本时,linq查询必须执行并只搜索选定的复选框

例如:


如果用户检查lastname和tell,并在文本框中输入数据,则查询仅检索所选数据,如果用户也检查average,则查询也会执行该操作,并返回3个join(例如)

LINQ查询是惰性的,在请求结果之前不会执行,因此您可以执行以下操作:

var source = GetSourceCollection();
var query = source;

if(FirstNameCheckbox.Checked)
    query = query.Where(x => x.FirstName.Contains(FirstNameTextBox);

if(LirstNameCheckbox.Checked)
    query = query.Where(x => x.LirstName.Contains(LirstNameTextBox);

// (...)

// execution is right here, when ToList is called
var results = query.ToList();

欢迎来到stackoverflow。你试过什么?我只对旧的EF做过,但除非情况发生了变化,否则可能需要在IQueryable和IObjectQueryable之间进行一些转换,并且可能需要为每个新的参数化排列重建其查询计划(需要几秒钟!)。