Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何";选择全部";具有可空列的LINQ查询中_C#_Linq - Fatal编程技术网

C# 如何";选择全部";具有可空列的LINQ查询中

C# 如何";选择全部";具有可空列的LINQ查询中,c#,linq,C#,Linq,这需要一点设置来解释。我知道数据库中的“空值是不好的”,我正在体验为什么会这样,但我对企业使用数据源的方式没有选择。数据源在数据集中有空值,我必须按原样处理它。(希望这能解决预期的“嗯,您的数据集不应该有空值…”或“为什么不删除空值…” 假设我有这样的样本集,其中“NULL”是实际的NULL: 现在假设我使用一个选项列表,通过关系列中不同的值列表过滤结果: 全部(表示显示所有记录) 空的 关系1 关系2 如果我没有“全部”选项,那就足够简单了: private IEnumerable<

这需要一点设置来解释。我知道数据库中的“空值是不好的”,我正在体验为什么会这样,但我对企业使用数据源的方式没有选择。数据源在数据集中有空值,我必须按原样处理它。(希望这能解决预期的“嗯,您的数据集不应该有空值…”或“为什么不删除空值…”

假设我有这样的样本集,其中“NULL”是实际的NULL:

现在假设我使用一个选项列表,通过
关系
列中不同的值列表过滤结果:

  • 全部(表示显示所有记录)
  • 空的
  • 关系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”列没有空值,我可以使用null
SelectedRelationship
参数作为“不按“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;
}