2014-04-15 114 views
3

我有一个C#声明如下:添加条件在LINQ声明

var errors = errorList.Select((e, i) => string.Format("Error occured #{0}: {1} (Error code = {2}).", i + 1, e.Message, e.ErrorCode)).ToArray(); 

我需要显示“发生错误”,当e.ErrorCode是“错误”和“警告出现”当E。 ErrorCode是'警告'。 如何将此条件添加到上述说明中?

谢谢。

回答

4

我可能只是包装稍微更复杂的逻辑变成像这样另一种方法..

 private string GetErrorCodeLogLabel(ErrorCode code) 
     { 
      if(code == ErrorCode.Error /* || .. other errors*/) 
       return "Error"; 
      else if (code == ErrorCode.Warning /* || .. other warnings*/) 
       return "Warning"; 

      throw new NotImplementedException(code); 
     } 

     var errors = errorList. 
      Select((e, i) => string.Format("{0} occured #{1}: {2} (Error code = {3}).", GetErrorCodeLogLabel(e.ErrorCode), i + 1, e.Message, e.ErrorCode)). 
      ToArray(); 
+0

Thanks.It工作。 – Jimmy

+0

我在想如果我们可以在不添加新功能的情况下实现这个功能,但无论如何这都可以工作。谢谢。 – Jimmy

6

你不能只是这样做:

errorList.Select((e, i) => string.Format("{2} Occured #{0}: {1} (Error code = {2}).", i + 1, e.Message, e.ErrorCode)).ToArray(); 
+2

+1简单易用:) – Habib

+0

谢谢...但e.ErrorCode枚举有ot她的值,我想只显示自定义消息...即错误/警告... NotImplemented = 0, NoDataFound = 1, DataAccessError = 2, WebServiceError = 3, – Jimmy

0

您可以根据在线使用:(你可以修改条件)

var errors = errorList.Select((e, i) => string.Format("{0} occured #{1}: {2} (Error code = {3}).", 
       e.ErrorCode == ErrorCode.Error ? "Error" : "Warning", 
       i + 1, 
       e.Message, 
       e.ErrorCode)).ToArray();