【发布时间】:2015-07-08 03:02:59
【问题描述】:
我是 linq 新手,只是遇到了一个我不明白的用法。在 ADO .Net 中,SQL 语句是字符串。当用户的输入影响查询时,很容易根据用户选择的复选框或下拉列表为 SQL 构建字符串。
在我当前的应用程序中,我有三个不同的下拉框,用户可以在其中为他们的查询选择各种值。假设每个下拉菜单有 10 个值。很容易说为每个可能的组合单独的 linq 查询是不切实际的。
如果我知道用户在组合框中选择了一个值,那么我可以轻松地将其编码到 linq 查询中。但是如果用户没有选择一个值怎么办?
如何处理可能存在或不存在的选择条件?
谢谢
所以根据我写的输入;
private DataTable FilterDMRMarcIDs()
{
var tmpValue = dtDMRMarc.AsEnumerable();
if (chekbCountry.Checked)
{
tmpValue = tmpValue.Where(contact => contact.Field<string>("Country") == cbCountry.SelectedItem);
}
if (chekbState.Checked){
tmpValue = tmpValue.Where(contact => contact.Field<string>("State") == cbState.SelectedItem);
}
return tmpValue.CopyToDataTable<DataRow>();
} // FilterDMRMarcIDs() ...
其中 dtData 是一个数据表,cbCountry 和 cbState 是包含字符串的组合框。
问题是这仅返回第一个匹配记录,而不是所有其他匹配记录。
有什么建议吗?
【问题讨论】:
-
在那种情况下会发生什么?