在LINQ语句中添加条件

时间:2014-04-15 15:50:20

标签: c# linq

我的C#声明如下:

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是'警告'。 如何将此条件添加到上述声明中?

感谢。

3 个答案:

答案 0 :(得分:6)

你不能这样做:

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

答案 1 :(得分: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();

答案 2 :(得分:0)

您可以使用内联if :(您可以修改条件)

    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();