C# 仅使用Linq简化foreach和Any()函数
我想重写此代码以仅使用Linq: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
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。谢谢!我对原版没有任何问题,我只是好奇怎么做。谢谢这两个自然语言语句主要是向上投票的。谢谢!我对原版没有任何问题,我只是好奇怎么做。谢谢这两个自然语言语句主要是向上投票的。谢谢!非常好的解决方案。谢谢!伟大的解决方案。