2012-08-06 69 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