1

c# 3.5 と linq を使用して簡単なプログラムを作成します。

授業がある

public 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;
    }

}

リストを比較しようとしています。

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 = 1, Read = true }, 
    new Product {ObjectId = 2, Read = false } 
};

var result= productsListSearch.SequenceEqual(firstGroup);

結果が正しくないのはなぜですか? アイテムを並べ替える必要がありますか?

4

3 に答える 3

0

2 番目のデータ セットは、メイン データをグループ化して並べ替えた後の表示方法であると想定しています。そのためには、グループ化されたアイテムがソートされるように、この行を変更する必要があります。

var groupedCustomerList = products.GroupBy (u => u.RoleId)
        .Select (u => u.OrderBy (x => x.ObjectId));

これは、最初の要素を取得するためのよりクリーンな方法です。

var firstGroup = groupedCustomerList.First ();
于 2013-07-14T12:29:52.227 に答える