0

我有一个名为“员工”的共享点列表。我有以下列:

  • 标题
  • 乐队1
  • 带2
  • 乐队3
  • 带4

我有 20 个波段列,但为了更好地解释问题,我只包含了 4 个波段列。我知道如何从特定列中获取数据,但我该如何进行以下操作:

  1. 仅从上面的列表中获取“Band”列的总数
  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 回答