首页 > 解决方案 > Lambda 表达式中的 Switch 语句

问题描述

我的 HomeController 中有以下代码:

public ActionResult Phones_Read([DataSourceRequest] DataSourceRequest request) {
  var result = new DataSourceResult();           
  using (var context = new GPEContext()) {
    var filterzzz = context.TelefonUndAbwesends.Where(p => !p.Name.Contains("zzz"));
    IQueryable < TelefonUndAbwesend > telListe = filterzzz;                    
    result = telListe.ToDataSourceResult(request);                                    
    return Json(result);
  }
}

如何在 filterzzz 变量之外使用 switch 语句?我有多个 p.Status 的切换场景:

switch(p.Status) {
  case "0":
    p.Status = "Abwesend";
    break;
  case "1":
    p.Status = "Anwesend";
    break;
  case "2":
    p.Status = "Pause";
    break;
  case "3":
    p.Status = "Dienstgang";
    break;
  case "4":
    p.Status = "Home Office";
    break;
  default:
    p.Status = "";
    break;
} 

标签: c#lambdaswitch-statement

解决方案


我得到了答案。感谢这篇文章。克利克

var filterzzz = context.TelefonUndAbwesends.Where(p => !p.Name.Contains("zzz"))
                .Select(
                    delegate (TelefonUndAbwesend p)
                    {
                        var switchedList = new TelefonUndAbwesend
                        {
                            Name = p.Name,
                            Abteilung = p.Abteilung,
                            Durchwahl = p.Durchwahl,
                            Kürzel = p.Kürzel

                        };

                        switch (p.Status)
                        {
                            case "0":
                                switchedList.Status = "Abwesend";
                                break;
                            case "1":
                                switchedList.Status = "Anwesend";
                                break;
                            case "2":
                                switchedList.Status = "Pause";
                                break;
                            case "3":
                                switchedList.Status = "Dienstgang";
                                break;
                            case "4":
                                switchedList.Status = "Home Office";
                                break;
                            default:
                                switchedList.Status = "";
                                break;
                        }
                        return switchedList;
                    }).AsQueryable();

多谢你们。


推荐阅读