Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linq查询子句中的IF语句_Linq_Linq To Sql_Linq To Entities - Fatal编程技术网

linq查询子句中的IF语句

linq查询子句中的IF语句,linq,linq-to-sql,linq-to-entities,Linq,Linq To Sql,Linq To Entities,我已经写了一个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

我已经写了一个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>();
list=(从dt.AsEnumerable()中的cr开始)
选择新卡
{
MemberNumber=cr.Field(“MemberNumber”),
如果(cr.Field(“CardState”)==0)
{
CardState=“aaa”;
}
如果(cr.Field(“CardState”)==1)
{
CardState=“bbb”;
}
如果(cr.Field(“CardState”)==2)
{
CardState=“ccc”;
}
如果(cr.Field(“CardState”)==3)
{
CardState=“ddd”;
}
如果(cr.Field(“CardState”)==4)
{
CardState=“eee”;
}
}).ToList();

在初始值设定项中不能有这样的分支逻辑。但是,您可以将其写成一系列三元运算符:

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=(从dt.AsEnumerable()中的cr开始)
选择新卡
{
MemberNumber=cr.Field(“MemberNumber”),
CardState=(cr.Field(“CardState”)==0)?“aaa”:
(cr.Field(“CardState”)==1?“bbb”:
(cr.Field(“CardState”)==2)?“ccc”:
(cr.Field(“CardState”)==3)?“ddd”:
(cr.Field(“CardState”)==4)?“eee”:
(cr.Field(“CardState”)==5?“bbb”:空
}).ToList();
尽管更好的解决方案可能是将该代码块分离到单独的函数中,并从初始值设定项中调用它:

list = (from cr in dt.AsEnumerable()
select new Cards
{
   MemberNumber = cr.Field<string>("MemberNumber"),
   CardState = GetCardState( cr.Field<int>("CardState"))
  }).ToList<Cards>();
list=(从dt.AsEnumerable()中的cr开始)
选择新卡
{
MemberNumber=cr.Field(“MemberNumber”),
CardState=GetCardState(cr.Field(“CardState”))
}).ToList();

当我们被要求调试“错误”时,我喜欢它。