2012-08-06 101 views

回答

1

時使用強類型版本和無magiv字符串是否有你有一個理由ListItem,而不是使用LINQ到SharePoint來獲得您的Spmetal類?

據我所知,沒有內置的方式,但你可以使用像automapper這樣的工具來做到這一點。

Mapper.CreateMap<SPListItem, HandbookCodesHandbookCode>() 
      .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ID)) 
      .ForMember(dest => dest.CodeDescription, opt => opt.MapFrom(src => src["CodeDescription"])); 
     SPWeb web = SPContext.Current.Site.RootWeb; 
     SPList list = web.Lists["HandbookCodes"]; 

     SPListItem item = list.GetItemById(1); 

     HandbookCodesHandbookCode hc = Mapper.Map<SPListItem, HandbookCodesHandbookCode>(item); 

這樣做是使用LINQ到SharePoint,只是創建一個查詢得到這個像

HandbookTeamSiteDataContext ctx = new HandbookTeamSiteDataContext(SPContext.Current.Site.RootWeb.Url); 

     var hb = from h in ctx.HandbookCodes 
       where h.Id == 1 
       select h; 

除非您將得到一個SPListItem的另一種方式(事件接收器和工作流),我會嘗試使用此代替SPListItem(除非您有一個複雜的查詢,表現不佳)

+0

更新的問題 – Zapacila 2012-08-06 20:00:11

+0

您可以嘗試將SPListItem映射到像我在第一個代碼塊中那樣生成的類型。 Automapper是一個很好的工具,可以幫助你,如果你找不到一些內置/自動的方式來做這種轉換。 – Josh 2012-08-06 20:06:49