0

「従業員」というSharePointリストがあります。次の列があります。

  • タイトル
  • ファーストネーム
  • 苗字
  • Band1
  • Band2
  • Band3
  • Band4

私は20のバンド列を持っていますが、問題をよりよく説明するために4つのバンド列しか含めていません。特定の列からデータを取得する方法は知っていますが、次のことを行うにはどうすればよいですか。

  1. 上記のリストからのみ「バンド」列の総数を取得します
  2. 各「バンド」列をループして、各バンドのアイテム/値を取得/表示します

私の最初は、すべてのバンド列をループするループがあり、次にその中にループがあり、各バンド内の各アイテム/値を取得/表示しますが、それを実行する方法が完全にはわかりません

任意のアイデアや提案をいただければ幸いです、

ありがとう、

4

1 に答える 1

1

すべてのバンドフィールドを取得するには、次のようにします

var fieldLookup = mySpList.Fields.Cast<SPField>()
    .Where(f => f.Title.StartsWith("Band"))
    .Select(f => { 
            int bandNo;
            bool successful = int.TryParse(f.Title.Substring(4), out bandNo);
            return new { Id = f.Id, BandNo = bandNo, Success = successful };
        })
    .Where(a => a.Success)
    .ToDictionary(a => a.BandNo, a => a.Id);

これDictionary<int, Guid>により、列見出しのバンド番号をフィールドのIDにマップすることができます。

次に、これらのIDを使用して値をフェッチできます。たとえば、<FieldRef>に渡す要素のリストを作成するSPQueryことも、単に実行することもできます

foreach (SPListItem item in myList.Items)
{
    Console.WriteLine("Item {0}", item.Title);
    foreach(int bandNo in fieldLookup.Keys)
    {
        Console.WriteLine("Band {0}: {1}", bandNo, item[fieldLookup[bandNo]]);
    }
}
于 2012-08-07T08:57:41.817 に答える