0

私はリストを持っています。Group By を適用して、一意の ExistingData レコードを見つける必要があります。次のコードが機能します。

 var distinctItemsWorking = myCostPages
        .GroupBy(x => new { 
                             x.CostPageContent.Program, 
                             x.CostPageContent.Group, 
                             x.CostPageContent.Sequence })
        .Select(y => y.First());

次に、一意のリストをリストに変換する必要があります。グループ化を行うときに、この変換をどのように達成できますか?

C# メソッド

    public List<CostPage> GetCostPages(SearchEntity search, int pageIndex, int pageSize)
    {
        List<ExistingData> AllData = GetExistingData();

        var allMatchingValues = from existingDatas in AllData
                                where existingDatas.CostPageContent.Program == search.Program
                                select existingDatas;


        var query = allMatchingValues;
        List<ExistingData> currentSelectionForExistingData = query
            .Skip(pageIndex * pageSize)
            .Take(pageSize)
            .ToList();


        //var distinctItems = currentSelectionForExistingData.GroupBy(x => new { x.CostPageContent.Program, x.CostPageContent.Group, x.CostPageContent.Sequence })
        //                    .Select(y => new CostPage()
        //                    {
        //                        CostPageContent = y.CostPageContent 
        //                    }
        //                    );

        var distinctItemsWorking = currentSelectionForExistingData.GroupBy(x => new { x.CostPageContent.Program, x.CostPageContent.Group, x.CostPageContent.Sequence })
                           .Select(y => y.First());

        List<CostPage> myCostPages = new List<CostPage>();
        foreach (ExistingData exist in distinctItemsWorking)
        {
            CostPage c = new CostPage();
            c.CostPageContent = exist.CostPageContent;
            myCostPages.Add(c);
        }

        return myCostPages;
    }

その他のクラス

public class ExistingData
{
    public CostPageNumberContent CostPageContent { get; set; }
    public string ItemID { get; set; }
}

public class CostPage
{
    public CostPageNumberContent CostPageContent { get; set; }
}


public class CostPageNumberContent
{
    public string Program { get; set; }
    public string Group { get; set; }
    public string Sequence { get; set; }
}

public class SearchEntity
{
    public string Program { get; set; }
    public string Sequence { get; set; }
    public string ItemID { get; set; }
}
4

1 に答える 1

2

を置き換えようとしている場合はforeach、次のようにすることができます。

var myCostPages = currentSelectionForExistingData
    .GroupBy(x => new { x.CostPageContent.Program, x.CostPageContent.Group, 
                        x.CostPageContent.Sequence })
    .Select(y => new CostPage { CostPageContent = y.First().CostPageContent })
    .ToList();

CostPageオブジェクトの作成を に入れてGroupByも意味がありません。はSelect、この変換を実行する正しい場所です。

于 2013-08-06T15:55:28.197 に答える