2014-07-21 63 views
0

我有項目列表季度:List<Item> 我想將它轉化成的Items + quarters -> list<ItemModel>轉換列表列出使用LINQ

項目列表還包含另一個列表即ItemDetails。

如何將Item對象複製到另一個Item對象並使用LinQ從CreatedDate中檢索季度?

我還添加了將季度轉換爲季度的季度結構。但我無法list<Item>轉換爲list<ItemModel>

class Item{ 
     public int Id { get; set; } 
     public DateTime CreatedDate { get; set; } 
     public string Name { get; set; } 
     public List<NameValuePair> ItemDetails { get; set; } 
    } 


public struct Quarter 
    { 
     public Quarter(int year, int quarterIndex) 
     { 
      Year = year; 
      QuarterIndex = quarterIndex; 
     } 

     public static Quarter FromDate(DateTime date) 
     { 
      return new Quarter(date.Year, 1 + (date.Month - 1)/3); 
     } 

     public int Year; 
     public int QuarterIndex; 
    } 

public class ItemModel 
{ 
    public Item Item { get; set; } 

    public Quarter Quarter { get; set; } 
} 

你能幫幫我嗎?

+0

第一件事,我建議:讓你的'Quarter'結構不變,並保持私人領域。 (改爲公開屬性。)接下來,實現'IEquatable '和'IComparable '。 –

+0

順便說一下,爲什麼你需要一個'ItemModel'類型並不清楚。難道你不能僅僅通過調用'Quarter.FromDate(CreatedDate)''添加一個''Quarter''屬性到'Item'嗎? –

+0

你可以添加你的代碼嗎? – user1120418

回答

1

您不能轉換List<Item>List<ItemModel>,但您可以創建一個新的列表:

List<Item> itemList = ...; 
List<ItemModel> itemModelList = itemList 
    .Select(item => new ItemModel { Item = item, Quarter = Quarter.FromDate(item.CreatedDate)}) 
    .ToList();