C# 如何";选择全部";具有可空列的LINQ查询中
这需要一点设置来解释。我知道数据库中的“空值是不好的”,我正在体验为什么会这样,但我对企业使用数据源的方式没有选择。数据源在数据集中有空值,我必须按原样处理它。(希望这能解决预期的“嗯,您的数据集不应该有空值…”或“为什么不删除空值…” 假设我有这样的样本集,其中“NULL”是实际的NULL: 现在假设我使用一个选项列表,通过C# 如何";选择全部";具有可空列的LINQ查询中,c#,linq,C#,Linq,这需要一点设置来解释。我知道数据库中的“空值是不好的”,我正在体验为什么会这样,但我对企业使用数据源的方式没有选择。数据源在数据集中有空值,我必须按原样处理它。(希望这能解决预期的“嗯,您的数据集不应该有空值…”或“为什么不删除空值…” 假设我有这样的样本集,其中“NULL”是实际的NULL: 现在假设我使用一个选项列表,通过关系列中不同的值列表过滤结果: 全部(表示显示所有记录) 空的 关系1 关系2 如果我没有“全部”选项,那就足够简单了: private IEnumerable<
关系
列中不同的值列表过滤结果:
- 全部(表示显示所有记录)
- 空的
- 关系1
- 关系2
private IEnumerable<RwsBasePhonesAndAddress> PopulateQuery(string SelectedCampus,
string SelectedRelationship)
{
IEnumerable<RwsBasePhonesAndAddress> query =
db.RwsBasePhonesAndAddresses.Where(m => m.Campus == SelectedCampus);
if (!string.IsNullOrEmpty(SelectedRelationship))
query = query.Where(m => m.Relationship == SelectedRelationship);
else
query = query.Where(m => m.Relationship == null);
query = query.OrderBy(m => m.StudentName).AsEnumerable();
return query;
}
private IEnumerable PopulateQuery(字符串SelectedCampus,
字符串选择关系)
{
IEnumerable查询=
其中(m=>m.Campus==SelectedCampus);
如果(!string.IsNullOrEmpty(SelectedRelationship))
query=query.Where(m=>m.Relationship==SelectedRelationship);
其他的
query=query.Where(m=>m.Relationship==null);
query=query.OrderBy(m=>m.StudentName).AsEnumerable();
返回查询;
}
我已经验证了编写的代码返回与“SelectedRelationship”参数匹配的结果,包括选择“NULL”作为过滤器时的“NULL”记录
选项列表中包含的“全部”使这一点变得困难。如果“Relationship”列没有空值,我可以使用nullSelectedRelationship
参数作为“不按“SelectedRelationship”过滤”选项
有什么方法可以在代码中使用“不过滤”选项吗?不完全确定我是否理解了这个问题。从我对上面代码的理解来看,您缺少了一个部分,即如果您得到一个“All”值,那么就不能过滤掉任何内容。对吗?如果是:
private IEnumerable<RwsBasePhonesAndAddress> PopulateQuery(string SelectedCampus,
string SelectedRelationship)
{
IEnumerable<RwsBasePhonesAndAddress> query =
db.RwsBasePhonesAndAddresses.Where(m => m.Campus == SelectedCampus);
if(string.IsNullOrEmpty(SelectedRelationship))
query = query.Where(m => m.Relationship == null);
else if (SelectedRelationship != "All")
query = query.Where(m => m.Relationship == SelectedRelationship);
query = query.OrderBy(m => m.StudentName).AsEnumerable();
return query;
}
private IEnumerable PopulateQuery(字符串SelectedCampus,
字符串选择关系)
{
IEnumerable查询=
其中(m=>m.Campus==SelectedCampus);
if(string.IsNullOrEmpty(SelectedRelationship))
query=query.Where(m=>m.Relationship==null);
else if(SelectedRelationship!=“全部”)
query=query.Where(m=>m.Relationship==SelectedRelationship);
query=query.OrderBy(m=>m.StudentName).AsEnumerable();
返回查询;
}
现在它看起来很明显,现在我正在看它。我只是想从另一个角度看看。
private IEnumerable<RwsBasePhonesAndAddress> PopulateQuery(string SelectedCampus,
string SelectedRelationship)
{
IEnumerable<RwsBasePhonesAndAddress> query =
db.RwsBasePhonesAndAddresses.Where(m => m.Campus == SelectedCampus);
if(string.IsNullOrEmpty(SelectedRelationship))
query = query.Where(m => m.Relationship == null);
else if (SelectedRelationship != "All")
query = query.Where(m => m.Relationship == SelectedRelationship);
query = query.OrderBy(m => m.StudentName).AsEnumerable();
return query;
}