-1

LINQクエリ句を作成しましたが、エラーが発生します。誰か助けてもらえますか。よろしくお願いします。

list = (from cr in dt.AsEnumerable()
select new Cards
{
   MemberNumber = cr.Field<string>("MemberNumber"),
   if( cr.Field<int>("CardState")==0)
   {
          CardState ="aaa";
   }
   if( cr.Field<int>("CardState")==1)
   {
     CardState ="bbb";
   }
   if( cr.Field<int>("CardState")==2)
   {
      CardState ="ccc";
   }
  if( cr.Field<int>("CardState")==3)
  {
     CardState ="ddd";
  }
  if( cr.Field<int>("CardState")==4)
  {
    CardState ="eee";
   }
  }).ToList<Cards>();
4

1 に答える 1

3

イニシャライザ内にそのような分岐ロジックを含めることはできません。ただし、一連の三項演算子として記述できます。

list = (from cr in dt.AsEnumerable()
select new Cards
{
   MemberNumber = cr.Field<string>("MemberNumber"),
   CardState = ( cr.Field<int>("CardState")==0) ? "aaa" : 
               ( cr.Field<int>("CardState")==1) ? "bbb" :
               ( cr.Field<int>("CardState")==2) ? "ccc" :
               ( cr.Field<int>("CardState")==3) ? "ddd" :
               ( cr.Field<int>("CardState")==4) ? "eee" :
               ( cr.Field<int>("CardState")==5) ? "bbb" : null
}).ToList<Cards>();

より良い解決策は、そのコード ブロックを別の関数に分離し、初期化子から呼び出すことです。

list = (from cr in dt.AsEnumerable()
select new Cards
{
   MemberNumber = cr.Field<string>("MemberNumber"),
   CardState = GetCardState( cr.Field<int>("CardState"))
  }).ToList<Cards>();
于 2012-11-06T01:51:57.750 に答える