簡體   English   中英

將ToList()轉換為MyObject的列表

[英]Convert ToList() to a list of MyObject

我正在嘗試通過使用LINQ並轉換回MyObject List來轉換正在執行操作的MyObject列表。

public class Part
{
    public string ID { get; set; }
    public string DescFr { get; set; }
    public string DescEng { get; set; }
    public string PartNumber{ get; set; }
    public Part(string strID, string strDescFr, string strDescEng, string strPartNumber) 
    {
        this.ID = strID;
        this.DescFr = strDescfr;
        this.DescEng = strDescEng;
        this.PartNumber= strPartNumber;
    }
}

因此,在另一個類中,我使用該類通過數據庫創建Part對象的列表。

List<Part> lstParts = DB.Query.GetParts();

之后,我將它們按描述分組

var lstGrouped = lstParts.GroupBy(x => x.DescrFr);

編輯:

var lstGrouped = lstParts.GroupBy(x => x.PartNumber);

如何將lstGrouped轉換回List<Part> 我嘗試了ToList()方法並將其ToList()List<Part> ,但它不起作用,給了我一個強制轉換錯誤:

啟用類型轉換的對象

由於分組返回的是IGroupingIEnumerable ,因此您不能將其轉換回子列表。 如果您要刪除重復項,只需選擇第一個:

List<Part> finalList = lstGrouped.Select(g => g.First()).ToList();

如果要退回所有項目(此時為什么將它們分組?),請使用SelectMany

List<Part> finalList = lstGrouped.SelectMany(g => g).ToList();

GroupBy返回IEnumerable<IGrouping<TKey, TSource>>因此您不再需要僅使用TSource列表(在您的情況下為Part ),而是使用分組列表。

您可能需要遍歷分組並從每個分組中獲取列表(請參閱如何從IGrouping獲取值 )。

難以完全回答,因為我不清楚目標(為什么要分組,只是為了再次獲得未分組的列表)。

看起來您想從項目列表中獲得不同的項目。 在這種情況下,您可以在原始列表上使用Distinct方法,也可以采用小組方法進行以下操作-

lstParts.GroupBy(x => x.PartNumber).Select(x => x.First())。ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM