Sharepoint 2010列表项到linq 2 Sharepoint spmetal类

Sharepoint 2010列表项到linq 2 Sharepoint spmetal类,linq,sharepoint-2010,splistitem,Linq,Sharepoint 2010,Splistitem,如何将ListItem包装/转换/强制转换为生成的spmetal类?(linq 2 sharepoint) 谢谢 更新: 我之所以寻找这些,是因为事件接收器使用splistitems,并且我希望在访问数据时使用强类型版本和无magiv字符串是否有理由使用ListItem而不是使用LINQ to SharePoint来获取spmetal类 据我所知,没有内置的方式,但你可以使用像automapper这样的工具来做到这一点 Mapper.CreateMap<SPListItem, Handbo

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

谢谢

更新:


我之所以寻找这些,是因为事件接收器使用splistitems,并且我希望在访问数据时使用强类型版本和无magiv字符串

是否有理由使用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);

除非给您一个SPListItem(事件接收器和工作流),否则我会尝试使用它,而不是获取一个SPListItem(除非您有一个执行得不好的复杂查询)

您可以尝试将SPListItem映射到生成的类型,就像我在第一个代码块中所做的那样。Automapper是一个很好的工具,如果您找不到某种内置/自动方式来进行转换,它可能会帮助您。
HandbookTeamSiteDataContext ctx = new HandbookTeamSiteDataContext(SPContext.Current.Site.RootWeb.Url);

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