Sharepoint 2010 listitem到linq 2 sharepoint spmetal类

时间:2012-08-06 18:36:23

标签: linq sharepoint-2010 splistitem

如何将ListItem包装/转换/转换为生成的spmetal类? (linq 2 sharepoint)

谢谢!

更新

我正在寻找这些,因为事件接收器使用splistitems,我想在访问数据时使用强类型版本而不使用magiv字符串

1 个答案:

答案 0 :(得分:1)

您是否有理由使用ListItem而不是使用LINQ to 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 to 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(除非你有一个执行不好的复杂查询)