Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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# 从列表中搜索搜索值可能包含空值_C# - Fatal编程技术网

C# 从列表中搜索搜索值可能包含空值

C# 从列表中搜索搜索值可能包含空值,c#,C#,我必须从集合中搜索,在搜索过程中,列表可能包含也可能不包含空值。但如果存在null值,它将从其他搜索值进行搜索 我的代码是 List = ListAssetDetail.Where( e =>SelectedAsset.Equals(e.AssetName) && SlectedBroad.Equals(e.BroadcasterName) && SelectedAssetfor.Equals(e.AssetFrom)

我必须从
集合中搜索,在搜索过程中,列表可能包含也可能不包含空值。但如果存在null值,它将从其他搜索值进行搜索

我的代码是

List =
        ListAssetDetail.Where(
            e =>SelectedAsset.Equals(e.AssetName) && SlectedBroad.Equals(e.BroadcasterName) && SelectedAssetfor.Equals(e.AssetFrom) &&
           SelectedGenre.Equals(e.GenreName) && SelectedBoque.Equals(e.Subcategory) && SelectedContentType.Equals(e.AssetFor)).ToList();

如果你想让它成为一个过滤器,你可以这样使用它:

        List = ListAssetDetail.Where( e => 
            (string.IsNullOrEmpty(SelectedAsset) || SelectedAsset.Equals(e.AssetName)) &&
            (string.IsNullOrEmpty(SlectedBroad) || SlectedBroad.Equals(e.BroadcasterName)) &&
            (string.IsNullOrEmpty(SelectedAssetfor) || SelectedAssetfor.Equals(e.AssetFrom)) &&
            (string.IsNullOrEmpty(SelectedGenre) || SelectedGenre.Equals(e.GenreName)) &&
            (string.IsNullOrEmpty(SelectedBoque) || SelectedBoque.Equals(e.Subcategory)) &&
            (string.IsNullOrEmpty(SelectedContentType) || SelectedContentType.Equals(e.AssetFor)));

因此,当一个值为NULL时,它将在Equals上被跳过。因此,每个字段都应该匹配,除非它为null或为空。

您需要花更多的精力解释您的问题。这行“列表可能包含或不包含空值”的意思是“ListAssetDetail”可能包含空值,对吗?“其他搜索值”是什么意思?如果集合中的对象为null,则查询是否应跳过该对象?请尽量把你的问题解释清楚一点。说“SelectedAsset”等是字符串不是有点困难?它们可以是任何结构,甚至是他/她试图检查引用的对象。我假设AssetName、GenreName等属性都是字符串,为什么要将结构甚至对象与名称进行比较。正如你所注意到的,这个问题写得很简洁,并以此为基础,我做了一些假设。如果你在回答中提到你的假设,那就太好了。谢谢。:)