2015-05-12 27 views
0

我試圖轉換ListMyObject,我正在使用LINQ進行操作並返回到MyObject的列表。將ToList()轉換爲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); 

我如何轉換回lstGroupedList<Part>? 我曾嘗試ToList()方法,並將其轉換爲List<Part>,這是行不通的,給我一個施法錯誤:

enable to cast object of type

+0

你爲什麼分組,只返回一個未分組的集合? – BradleyDotNET

+0

那麼這只是一個例子,但我在我的PartNumber上分組,可以是重複的。我將編輯它 – Sam

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

由於分組返回IEnumerableIGrouping您不能將其轉換回子列表。如果你想刪除重複,只需選擇第一個:

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

如果你想所有的項背(?在這一點上,你爲什麼將它們分組),然後使用SelectMany

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

的GroupBy返回IEnumerable<IGrouping<TKey, TSource>>所以你不再工作瓦特/只的TSource列表(在你的情況Part),但是分組列表。

您可能想遍歷分組並從每個分組中獲取列表(請參閱How to get values from IGrouping)。

很難完全回答,因爲我不清楚目標(爲什麼你會分組,爲了再次獲得未分組列表)。

0

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

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