SharePoint では、次の id;#value のようにフォーマットされている多くのフィールド id-value ペアがあります。これは、そのフィールドの値を抽出すると id_1;#value_1;#id_2;#value_2;#id_3;#value_3 のような結果が得られるマルチルックアップのようなフィールドではさらに複雑になります。
このプロセスを簡素化し、少なくとも値から ID を削除する既知の組み込み関数があるかどうか疑問に思っています。
SharePoint では、次の id;#value のようにフォーマットされている多くのフィールド id-value ペアがあります。これは、そのフィールドの値を抽出すると id_1;#value_1;#id_2;#value_2;#id_3;#value_3 のような結果が得られるマルチルックアップのようなフィールドではさらに複雑になります。
このプロセスを簡素化し、少なくとも値から ID を削除する既知の組み込み関数があるかどうか疑問に思っています。
たとえば、ルックアップ フィールド タイプ (ID;#value を使用) を想定すると、 SPField.Type == SPFieldType.Lookup を確認してから、SPField をSPFieldLookupにキャストし、オーバーライドされたメソッドを使用してレコード値を取得できます。
詳細については、カスタム フィールド値クラスを参照してください。
また、私の記憶が正しければ (今は確認できないので DYOR です)、ベース SPField オブジェクトで .ValueAsText と .ValueAsHtml を呼び出すと、値から ID;# が削除されます。
フィールド値オブジェクトは、Sharepoint データベースに文字列として保存されます。単純な値 (「Hello world」など) の場合、これは十分単純です。しかし、ID と値のペアなどの複雑なフィールド値の場合、値全体を単一の文字列として格納する方法も明らかに複雑になります。Sharepoint の各フィールド値クラスは、独自のストレージ実装を担当します。値の文字列表現を書き込むToString()
責任があります。一方、フィールド値のコンストラクターは文字列を受け取り、それを解析してすべてのプロパティを適切に設定します。
たとえば、SPFieldUrlValue ( を表す<a href="url">description</a>
) には Url プロパティと Description プロパティがあります。新しいSPFieldUrlValue(string fieldValue)
オブジェクトを作成すると、値が解析され、それに応じてプロパティが設定されます。
フィールド値の真/正しい (そして多くの場合、強く型付けされた!) 表現を取得するには、フィールドの型と、そのフィールドの値クラスが何であるかを知る必要があります。