我正在使用.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
如果有人可以指出正确的方向,我将不胜感激。
答案 0 :(得分:0)
您需要使用Where<T>
代替Select<T>
因此它应该看起来像:
var a = Example.Where( x => x.PackageDependency == "" )
此外,我会(如果可以)使用string.IsNullOrWhiteSpace
检查Package.Dependency
的值
编辑::好像有人在我之前发表了与答案相同的答案。并不是要偷雷。