簡體   English   中英

如何比較Sharepoint列表項的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM