using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
class Product
{
public Product()
{
}
public int RoleId { get; set; }
public int ObjectId { get; set; }
public bool Read { get; set; }
public override bool Equals(object obj)
{
return Equals((Product) obj);
}
public bool Equals(Product other)
{
return ObjectId == other.ObjectId && Read == other.Read;
}
}
public static void Main()
{
List<Product> products = new List<Product>()
{
new Product { RoleId = 1, ObjectId = 2, Read = false },
new Product { RoleId = 2, ObjectId = 1, Read = false },
new Product { RoleId = 1, ObjectId = 1, Read = true }
};
var groupedCustomerList = products.GroupBy(u => u.RoleId)
.Select(grp => grp.ToList()).ToList();
var firstGroup = groupedCustomerList.ElementAt(0);
List<Product> productsListSearch = new List<Product>()
{
new Product {ObjectId = 2, Read = false }
, new Product {ObjectId = 1, Read = true }
};
var result= productsListSearch.SequenceEqual(firstGroup);
Console.WriteLine(result);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBjbGFzcyBQcm9kdWN0CnsKICAgIHB1YmxpYyBQcm9kdWN0KCkKICAgIHsKCiAgICB9CgogICAgcHVibGljIGludCBSb2xlSWQgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIGludCBPYmplY3RJZCB7IGdldDsgc2V0OyB9CiAgICBwdWJsaWMgYm9vbCBSZWFkIHsgZ2V0OyBzZXQ7IH0KCiAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBFcXVhbHMob2JqZWN0IG9iaikKICAgIHsKICAgICAgICByZXR1cm4gRXF1YWxzKChQcm9kdWN0KSBvYmopOwogICAgfQoKICAgIHB1YmxpYyBib29sIEVxdWFscyhQcm9kdWN0IG90aGVyKQogICAgewogICAgICAgIHJldHVybiBPYmplY3RJZCA9PSBvdGhlci5PYmplY3RJZCAmJiBSZWFkID09IG90aGVyLlJlYWQ7CiAgICB9Cgp9CiAgICAKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlMaXN0PFByb2R1Y3Q+IHByb2R1Y3RzID0gbmV3IExpc3Q8UHJvZHVjdD4oKSAKeyAKICAgIG5ldyBQcm9kdWN0IHsgUm9sZUlkID0gMSwgT2JqZWN0SWQgPSAyLCBSZWFkID0gZmFsc2UgfSwgCiAgICBuZXcgUHJvZHVjdCB7IFJvbGVJZCA9IDIsIE9iamVjdElkID0gMSwgUmVhZCA9IGZhbHNlIH0sIAogICAgbmV3IFByb2R1Y3QgeyBSb2xlSWQgPSAxLCBPYmplY3RJZCA9IDEsIFJlYWQgPSB0cnVlIH0gCn07Cgp2YXIgZ3JvdXBlZEN1c3RvbWVyTGlzdCA9IHByb2R1Y3RzLkdyb3VwQnkodSA9PiB1LlJvbGVJZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TZWxlY3QoZ3JwID0+IGdycC5Ub0xpc3QoKSkuVG9MaXN0KCk7Cgp2YXIgZmlyc3RHcm91cCA9IGdyb3VwZWRDdXN0b21lckxpc3QuRWxlbWVudEF0KDApOwoKTGlzdDxQcm9kdWN0PiBwcm9kdWN0c0xpc3RTZWFyY2ggPSBuZXcgTGlzdDxQcm9kdWN0PigpIAp7IAogICAgbmV3IFByb2R1Y3Qge09iamVjdElkID0gMiwgUmVhZCA9IGZhbHNlIH0gCiwgICBuZXcgUHJvZHVjdCB7T2JqZWN0SWQgPSAxLCBSZWFkID0gdHJ1ZSB9Cn07Cgp2YXIgcmVzdWx0PSBwcm9kdWN0c0xpc3RTZWFyY2guU2VxdWVuY2VFcXVhbChmaXJzdEdyb3VwKTsKQ29uc29sZS5Xcml0ZUxpbmUocmVzdWx0KTsKCX0KfQ==