C# 仅使用Linq简化foreach和Any()函数

C# 仅使用Linq简化foreach和Any()函数,c#,linq,foreach,C#,Linq,Foreach,我想重写此代码以仅使用Linq: foreach (string dog in dogs) { Assert.That(GetOwnersForDog(dog).Any(x => x.Name == "Me")); } 它将告诉所有的狗是否至少有一个主人叫“我”。 有什么想法吗?假设你在Dog和Owner public class Dog { public List<Owner> Owners { get; set; } ... } var foun

我想重写此代码以仅使用Linq:

foreach (string dog in dogs)
{
    Assert.That(GetOwnersForDog(dog).Any(x => x.Name == "Me"));
}
它将告诉所有的狗是否至少有一个主人叫“我”。
有什么想法吗?

假设你在
Dog
Owner

public class Dog
{
    public List<Owner> Owners { get; set; }
    ...
}
var found = Dogs.All(dog => dog.Owners.Any(owner => owner.Name = "Me")):
var found = Dogs.Any(dog  => dog.Owners.Any(owner => owner.Name = "Me")):
或者检查狗是否指定了主人

public class Dog
{
    public List<Owner> Owners { get; set; }
    ...
}
var found = Dogs.All(dog => dog.Owners.Any(owner => owner.Name = "Me")):
var found = Dogs.Any(dog  => dog.Owners.Any(owner => owner.Name = "Me")):
或者,如果您想使用


假设你在
主人

public class Dog
{
    public List<Owner> Owners { get; set; }
    ...
}
var found = Dogs.All(dog => dog.Owners.Any(owner => owner.Name = "Me")):
var found = Dogs.Any(dog  => dog.Owners.Any(owner => owner.Name = "Me")):
或者检查狗是否指定了主人

public class Dog
{
    public List<Owner> Owners { get; set; }
    ...
}
var found = Dogs.All(dog => dog.Owners.Any(owner => owner.Name = "Me")):
var found = Dogs.Any(dog  => dog.Owners.Any(owner => owner.Name = "Me")):
或者,如果您想使用

我认为添加LINQ不会“简化”任何事情,但是:

Assert.That(dogs.All(dog => GetOwnersForDog(dog).Any(x => x.Name == "Me")));
就个人而言,我更喜欢原始代码。

我认为添加LINQ不会“简化”任何事情,但是:

Assert.That(dogs.All(dog => GetOwnersForDog(dog).Any(x => x.Name == "Me")));

就个人而言,我更喜欢原始代码。

您想删除什么?foreach?您使用的是哪种单元测试框架?它有集合的断言吗?xUnit有一个
断言。所有
,NUnit都有。我正在使用NUnit。要删除什么?foreach?您使用的是哪种单元测试框架?它有集合的断言吗?xUnit有一个
断言。所有的
,NUnit都有。我正在使用NUnit。谢谢!我对原版没有任何问题,我只是好奇怎么做。谢谢这两个自然语言语句主要是向上投票的。谢谢!我对原版没有任何问题,我只是好奇怎么做。谢谢这两个自然语言语句主要是向上投票的。谢谢!非常好的解决方案。谢谢!伟大的解决方案。