![](/img/trans.png)
[英]Get mulitple values in a library column for each list items in Sharepoint with CSOM
[英]How to compare Sharepoint List Items Values?
親愛的大家,
我的列表包含日期/時間項,我想獲取最大的日期值。 例如,2012年5月1日是今天的最近一天? 如何比較這些值並使用C#獲取最新值? 我通過代碼訪問了列表和項;
using (SPWeb web = SPContext.Current.Site.RootWeb)
{
SPList alertList = web.Lists["Alert Status"];
if (alertList != null)
{
foreach (SPListItem alertItem in alertList.Items)
{
DateTime startDate = (DateTime)alertItem["Alert Date"];
}
}
}
我建議使用CAML查詢來檢索和排序項目。 您可以使用SPQuery類 :
SPList list = web.Lists["Alert Status"];
SPQuery query = new SPQuery();
query.Query = @"<OrderBy><FieldRef Name='Alert_x0020_Date' Ascending='FALSE' /></OrderBy>";
query.RowLimit = 1;
SPListItemCollection items = list.GetItems(query);
return items.Count == 0 ? DateTime.MinValue : (DateTime) items[0]["Alert Date"];
如果列表中有很多項目,則SPList.Items
會非常慢,因為所有項目都是從數據庫中獲取的。
更新:
您不應處置SPContext.Current.Site.RootWeb
。 以后可能會被其他代碼引用。 使用該規則僅將要打開自己的對象作為指導。 有關更多信息,請參見處置對象 。
如果您這樣收集日期:
List<DateTime> dates;
using (SPWeb web = SPContext.Current.Site.RootWeb)
{
SPList alertList = web.Lists["Alert Status"];
if (alertList != null)
{
dates = alertList.Items.Select(alertItem => (DateTime)alertItem["Alert Date"]).ToList();
}
}
這將為您提供最新的絕對日期:
dates.OrderByDescending(date => date).First();
這將為您提供最接近現在的日期:
dates.OrderBy(date => Math.Abs((date - DateTime.Now).TotalMilliseconds)).First();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.