public static string FieldTitle(this SPList list, Guid fieldId) { if (list == null) { return(string.Empty); } var spField = list.FieldById(fieldId); return(spField == null ? string.Empty : spField.Title); }
public static List <Tuple <int, ExpandoObject> > ListItems(this SPList list, string key, string fields, bool valueAsObject = false, List <int> idList = null) { var result = new List <Tuple <int, ExpandoObject> >(); var fldId = key.IsGuid() ? list.FieldById(key.ToGuid()) : list.FieldByName(key); var viewFields = new StringBuilder(); fields.Split('$').ToList().ForEach(item => { var fldTitle = item.IsGuid() ? list.FieldById(item.ToGuid()) : list.FieldByName(item); if (fldTitle != null) { viewFields.AppendFormat("<FieldRef ID='{0}' />", fldTitle.Id.ToString()); } }); viewFields.AppendFormat("<FieldRef ID='{0}' />", fldId.Id); var query = new SPQuery { ExpandRecurrence = true, DatesInUtc = true, ViewFields = viewFields.ToString(), Query = string.Format("<OrderBy>{0}</OrderBy>", viewFields) }; if (!idList.IsEmpty()) { var whereBuilder = new StringBuilder(); whereBuilder.AppendLine("<Where>"); whereBuilder.AppendLine("<In>"); whereBuilder.Append(string.Format(@"<FieldRef ID='{0}' />", fldId.Title)); whereBuilder.AppendLine("<Values>"); idList.ForEach(item => { whereBuilder.AppendFormat("<Value Type='Number'>{0}</Value>", item); }); whereBuilder.AppendLine("</Values>"); whereBuilder.AppendLine("</In>"); whereBuilder.AppendLine("</Where>"); query.Query = string.Format("{0} {1}", whereBuilder, query.Query); } var itemCollection = list.GetItems(query); for (var i = 0; i < itemCollection.Count; i++) { var id = itemCollection[i][fldId.InternalName].ToInt(); var value = (IDictionary <string, object>) new ExpandoObject(); fields.Split('$').ToList().ForEach(item => { var fldTitle = item.IsGuid() ? list.FieldById(item.ToGuid()) : list.FieldByName(item); var spListItem = itemCollection[i]; if (fldTitle != null && spListItem != null) { object spItemValue; try { spItemValue = valueAsObject ? spListItem.GetObjectValue(fldTitle) : fldTitle.GetFieldValueAsText(spListItem[fldTitle.Id]); } catch { spItemValue = string.Empty; } value.Add(item, spItemValue); } }); result.Add(new Tuple <int, ExpandoObject>(id, (ExpandoObject)value)); } return(result); }
public static List <Tuple <int, ExpandoObject> > ListItemsByCriteria(this SPList list, string key, string fields, bool valueAsObject, List <Tuple <string, string> > whereCriteria) { var result = new List <Tuple <int, ExpandoObject> >(); var fldId = key.IsGuid() ? list.FieldById(key.ToGuid()) : list.FieldByName(key); IQuery camlQuery = Camlex.Query(); var conditions = new List <Expression <Func <SPListItem, bool> > >(); if (!whereCriteria.IsEmpty()) { whereCriteria.ForEach(item => { var fieldCriteria = item.Item1.IsGuid() ? list.FieldById(item.Item1.ToGuid()) : list.FieldByName(item.Item1); if (fieldCriteria != null) { conditions.Add(CamlQueryHealper.GetOperation_Eq(fieldCriteria, item.Item2)); } }); camlQuery.WhereAll(conditions); } var viewFields = new List <Guid>(); fields.Split('$').ToList().ForEach(item => { var fldTitle = item.IsGuid() ? list.FieldById(item.ToGuid()) : list.FieldByName(item); if (fldTitle != null) { viewFields.Add(fldTitle.Id); } }); var query = new SPQuery { ExpandRecurrence = true, DatesInUtc = true, ViewFields = Camlex.Query().ViewFields(viewFields), Query = camlQuery.ToString() }; var itemCollection = list.GetItems(query); for (var i = 0; i < itemCollection.Count; i++) { var id = itemCollection[i][fldId.InternalName].ToInt(); var value = (IDictionary <string, object>) new ExpandoObject(); fields.Split('$').ToList().ForEach(item => { var fldTitle = item.IsGuid() ? list.FieldById(item.ToGuid()) : list.FieldByName(item); var spListItem = itemCollection[i]; if (fldTitle != null && spListItem != null) { object spItemValue; try { spItemValue = valueAsObject ? spListItem.GetObjectValue(fldTitle) : fldTitle.GetFieldValueAsText(spListItem[fldTitle.Id]); } catch { spItemValue = string.Empty; } value.Add(item, spItemValue); } }); result.Add(new Tuple <int, ExpandoObject>(id, (ExpandoObject)value)); } return(result); }