double []集合到字符串

时间:2013-03-19 19:27:10

标签: c# linq

基本上我有一系列尺码.. 集合

12,12
23,23
34,34
23,65
12,3

等。

我正在尝试采用这些并比较2个值并返回一个字符串..

如果值相同,则只返回其中一个数字,如果它们不同则返回两个...

实施例..

  new string.. 12, 23, 34, 23x65, 12x3

这是我写的代码,显然不是我想要的结果..

 List<double[]> oSize_list = _orderedCollection
    .Select(t => new double[] { t.psizeW, t.psizeH })
    .ToList();

3 个答案:

答案 0 :(得分:7)

List<string> oSize_list = _orderedCollection
    .Select(t => t.psizeW == t.psizeH ? t.psizeW.ToString() : string.Format("{0}x{1}", t.psizeW, t.psizeH))
    .ToList();

这应该实现你的目标

答案 1 :(得分:5)

要将(psizeW, psizeH)对数组转换为字符串数组,字符串格式取决于psizeW是否等于psizeH,您可以:

var result = _orderedCollection
    .Select(t => t.psizeW == t.psizeH ? 
            string.Format("{0}", t.psizeW) :
            string.Format("{0}x{1}", t.psizeW, t.psizeH))
    .ToList();

答案 2 :(得分:3)

最简单的方法是创建一个函数来进行比较并在linq查询中使用它。

    private string SizeToString(int a, int b)
    {
        if (a == b)
        {
            return a.ToString();
        }
        else
        {
            return String.Format("{0}x{1}", a, b);
        }
    }


    var stringSizes = from t in _orderedCollection
                      select SizeToString(t.psizeW, t.psizeH);

如果您总是希望对同一对象类型执行此操作,则可以使SizeToString采用大小对象而不是单个维度。