0

Visit テーブルから情報を取得するために linq を使用している For each ループがあります。最初の列にリストする名前を取得する別の For each ループでネストされています。

Caregiver | week1 | week2|....
__________|_______|______|....
John Smith|   2   |   3  |....
Mary Jones|   0   |   1  |....

これは 9 週間続き、ネストされたループで「訪問」カウントを取得します。内側のループを離れると、外側のループの最後の介護者に到達すると NULL エラーが発生し、次の週 (2 週目) の一番上の行から再び問題が発生すると思います。

Linq の「訪問」に基づいて Visit テーブルをクエリする前に、ステートメントでInvalidOperationExceptionを取得しています。Selectこれを修正するにはどうすればよいですか?

編集:エラーの画像は次のとおりです: http://i.imgur.com/yztNLR3.png

var phs = from cg in Context.CareGivers
          join cgg in Context.CareGiverGroups on cg.car_gvr_int_id equals cgg.car_gvr_int_id
          join o in Context.Organizations on cgg.org_int_id equals o.org_int_id
          where cg.row_sta_cd.Trim() == "A"
          && cgg.alt_phy_id != null
          && cgg.alt_phy_id.Trim() != String.Empty
          && o.cli_acc_fg.Trim() == "Y"
          && o.org_int_id == 1468461
          select cg;

int r = 1;
int s = 1;

for (int i = 0; i < 9; i++)
   {
     start = start.AddDays(i * -7);
     end = start.AddDays(7);

     foreach (var cg in phs)
             {
             // grab the correct exception, this will allow us to figure out where the issue might be
              var visits = cg.CareGiverFunction.First(cgf => cgf.CodeDetail.cod_dtl_ds.Trim() == "Family Physician").VisitCareGiver.Select(vcg => vcg.Visit).AsQueryable();
              visits = visits.Where(v => v.adm_ts >= start && v.adm_ts < end
                       && (v.CodeDetail.cod_dtl_ext_id.Trim() == "I" || v.CodeDetail.cod_dtl_ext_id.Trim() == "V")
                       && v.VisitStatusCdCodeDetail.cod_dtl_ext_id.Trim() != "CANCEL");


               int counter = visits.Count();
               String phys = cg.Person.DisplayName();

               workbook.AddCell(r, 0, phys);
               workbook.AddCell(r, s, counter);
               r++;

              }
              s++;

    }
4

2 に答える 2

0

cg.CareGiverFunction.First() が結果を返さない可能性があります。これは、その行にある残りのコードに比較するデータがないことを意味します。

Jon Skeet が同様の質問に答えています

于 2013-02-20T16:55:38.863 に答える