2014-07-21 64 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();