0

ListItem を生成された spmetal クラスにラップ/変換/キャストするにはどうすればよいですか? (linq 2 シェアポイント)

ありがとう!

アップデート:

イベント レシーバーが splistitem を使用しており、データにアクセスするときに強力な型のバージョンを使用し、magiv 文字列を使用したくないため、これらを探しています。

4

1 に答える 1

1

LINQ to SharePoint を使用して spmetal クラスを取得する代わりに、ListItem を使用する理由はありますか?

私の知る限り、組み込みの方法はありませんが、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 を取得する代わりにこれを使用しようとします (うまく機能しない複雑なクエリがない限り)

于 2012-08-06T19:45:13.357 に答える