[英]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>
,但它不起作用,給了我一個強制轉換錯誤:
啟用類型轉換的對象
由於分組返回的是IGrouping
的IEnumerable
,因此您不能將其轉換回子列表。 如果您要刪除重復項,只需選擇第一個:
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.