日期:2014-05-20  浏览次数:21048 次

LINQ 表达式中的三元表达式判断 ,,,################# 100% 结贴
 string check = "<a  href='CheckBillsOfLading.aspx?id={0}' >校验提货单>></a>";
            string checkLading = "<a  href='CheckBillsOfLading.aspx?id={0}'>查看提单</a>";
            string ApplyBack = "<a  href='ApplyBack.aspx?id={0}' >申请AA>></a>";
            string EitPrice = "<a href='EitPrice.aspx?id={0}'>AA价修改</a>"; 
            string BuybackDelivery = "<a  href='Buyback.aspx?id={0}' >申请CC></a><br/><a  href='Delivery.aspx?id={0}' >申请交割></a>";   //卖家111

           var result = from m in Mtinfolist
                        select new
                        {
                            m.ID,
                            m.GoodsName,
                            m.Price,
                            m.Num,
                            m.BUserId,
                            m.State,
                            m.CreateTime,
                            DIS = m.StateNum == 5 ? string.Format(check,m.ID) : (m.StateNum==12?string.Format(ApplyBack,m.ID):(m.StateNum==11?string.Format(EitPrice,m.ID): string.Format(checkLading,m.ID)))


DIS现在还有好几种情况要加进来,现在上面已经有checkLading ,ApplyBack 等四个啦,。继续写三元表达式感觉不行,, 请问大神们还有没有其他办法?

------解决方案--------------------
外部定义个字典, key: m.StateNum  value: html

Dictionary<int,string> dic=new Dictionary<int,string>();
  dic.Add(5,"<a  href='CheckBillsOfLading.aspx?id={0}' >校验提货单>></a>");


然后:
DIS?=dic.ContainsKey(m.StateNum)? string.Format(dic[m.StateNum],m.ID):"";