从对象列表中获取所有对象,其中对象属性之一在C#中为null或为空

时间:2019-02-04 22:27:31

标签: c# list

我正在使用.NET 4.7.2编写c#控制台应用程序。我有一个对象列表,我想从该列表中的PackageName中获得所有PackageDependency == ""字符串的列表。我已经看过几篇SO帖子,其中使用.FirstOrDefault根据这样的条件从列表中获取单个对象,但是我需要获取所有对象,而不仅仅是一个。

这是我的对象类:

public class PackageDetails
{
    public string PackageName { get; set; }
    public string PackageDependency { get; set; }
}

创建列表并加载它:

List<Objects.PackageDetails> Example = new List<Objects.PackageDetails>()
            {
                new Objects.PackageDetails {PackageName = "package1", PackageDependency = "dependency 1" }
                , new Objects.PackageDetails {PackageName = "package2" }
                , new Objects.PackageDetails {PackageName = "package3"}
                , new Objects.PackageDetails {PackageName = "package4", PackageDependency = "dependency 2" }

            };

然后在这里我需要一些指导。到目前为止,这是我能想到的:

var a = Example.Select(x => x.PackageDependency == "");

但是当我将鼠标悬停在a上时,它会给我

的结果
  

错误,正确,正确,错误

因此它正在标识PackageDependency == ""所在的对象,但是我需要让代码填充List<string>的{​​{1}}来包含PackageName所在的任何对象上面示例的输出应为值为{p>的PackageDependency == ""

  

package2

  

package3

如果有人可以指出正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要使用Where<T>代替Select<T>

因此它应该看起来像:

var a = Example.Where( x => x.PackageDependency == "" )

此外,我会(如果可以)使用string.IsNullOrWhiteSpace检查Package.Dependency的值

编辑::好像有人在我之前发表了与答案相同的答案。并不是要偷雷。