要获得全部频段的领域,我会做这样的事情
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]]);
}
}
感谢您的帮助Rawling,这看起来很有希望,现在我会尝试了这一点。 – 2012-08-07 11:21:40