1

I am using LINQ to get my correct data,inside this LINQ am calling one method to check the date difference.If the date difference goes negative LINQ returns me anonymous type.How I can handle this and how I will get this negative number as I aslo need this to my further use.

var daysCount = (from projCount in dtExpiring.AsEnumerable()
                 where projCount.Field<int>("AccountId") == accId
                 && (checkDate(projCount.Field<DateTime>("ValidFor"))) <= 5
                 && (checkDate(projCount.Field<DateTime>("ValidFor"))) >= 0
                 select new { daysRemain = (checkDate(projCount.Field<DateTime>("ValidFor"))) }).Distinct();
private int checkDate(DateTime validFor)
{
    try
    {
         DateTime date = DateTime.Now;
          int diffDays = Convert.ToInt32(Math.Round((validFor - date).TotalDays));

          return diffDays;
      }
      catch (Exception)
      {
           return 0;
      }
 }
4

1 に答える 1

1

編集:私がそれを正しく理解していれば、現在のLINQクエリは負の日数の差を返しておらず、それも必要です。その場合は、チェックを外す必要があります

&& (checkDate(projCount.Field<DateTime>("ValidFor"))) >= 0

日数が 0 または正のレコードのみを選択しているためです。


(古い回答)

AccountID匿名オブジェクトでも同様に選択できるため、返された差異をレコードと関連付けることができます。何かのようなもの:

select new { daysRemain = (checkDate(projCount.Field<DateTime>("ValidFor"))),
             accID =  projCount.Field<int>("AccountId"})

その後:

foreach(var item in daysCount)
{
    Debug.WriteLine("{0},{1}", item.accID, item.daysRemain);
}

負の数の AccID を取得するには、次を試してください。

var negativeAccIDs = daysCount.Where(r=> r.daysRemain < 0);
于 2013-03-28T12:00:01.283 に答える