Linq检查一个列表中的项目是否在另一个列表中 [英] Linq to check if item in one list is in another list

查看:75
本文介绍了Linq检查一个列表中的项目是否在另一个列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道在传统代码中它将是另一个foreach循环中的foreach循环。 有一个很好的例子,或者用传统的代码方法可以做得更好吗?


TIA


Harry


解决方案

你好,


看看使用
Any


< pre class ="prettyprint"style =""> [TestMethod]
public void MyTestMethod()
{
var firstList = new List< string>(){" Mazda","福特","雪佛兰","α"};
var secondList = new List< string>(){" Volkswagen",""""""""      };

var result = secondList.Any(car => car ==" Ford");
Assert.IsTrue(result);
}

由于福特位于第一个列表中,因此上述Assert返回true。


使用类列表的示例  ;

公共类公司
{
public int Id {get;组; }
public string Name {get;组; }
公共字符串FirstName {get;组; }
公共字符串LastName {get;组; }
public string Title {get;组; }
公共覆盖字符串ToString()
{
return


" {Id},'{Name}'" ;;
}
}


 [TestMethod] 
public void MyTestMethod()
{
var customer1 = new Company(){FirstName =" Karen",LastName =" Payne" ;};
var customer2 = new Company(){FirstName =" Mary",LastName =" Jackson"};
var customer3 = new Company(){FirstName =" Bill",LastName =" Adams"};

var cust1 = new List< Company>(){customer1,customer2,customer3};
var cust2 = new List< Company>(){customer1,customer2};

Assert.IsTrue(cust2.Any(cust => cust.FirstName ==" Karen"&& cust.LastName ==" Payne"));

cust2.RemoveAt(0);
Assert.IsFalse(cust2.Any(cust => cust.FirstName ==" Karen"&& cust.LastName ==" Payne"));
}



I know in conventional code it would be a foreach loop within another foreach loop.  Is there a good example of this or is this something better accomplished with the conventional code method?

TIA

Harry

解决方案

Hello,

Look at using Any

[TestMethod]
public void MyTestMethod()
{
    var firstList = new List<string>() {"Mazda","Ford","Chevy","Alpha"};
    var secondList = new List<string>() { "Volkswagen", "Ford", "BMW", "Daimler" };

    var result = secondList.Any(car => car == "Ford");
    Assert.IsTrue(result);
} 

The above Assert returns true since Ford is in the first list.

Example using a list for a class 

public class Company
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Title { get; set; }
    public override string ToString()
    {
        return


"{Id}, '{Name}'"; } }

[TestMethod]
public void MyTestMethod()
{
    var customer1 = new Company() {FirstName = "Karen", LastName = "Payne"};
    var customer2 = new Company() {FirstName = "Mary", LastName = "Jackson"};
    var customer3 = new Company() {FirstName = "Bill", LastName = "Adams"};

    var cust1 = new List<Company>() {customer1,customer2,customer3};
    var cust2 = new List<Company>() {customer1,customer2};

    Assert.IsTrue(cust2.Any(cust => cust.FirstName == "Karen" && cust.LastName == "Payne"));

    cust2.RemoveAt(0);
    Assert.IsFalse(cust2.Any(cust => cust.FirstName == "Karen" && cust.LastName == "Payne"));
} 


这篇关于Linq检查一个列表中的项目是否在另一个列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆