1

基本上我有一系列尺寸.. 收藏

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

ETC..

我正在尝试获取这些并比较这两个值并返回一个字符串..

如果值相同,则只返回 1 个数字,如果它们不同,则返回两者..

例子..

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

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

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

3 回答 3

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

这应该可以实现您的目标

于 2013-03-19T19:31:26.567 回答
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();
于 2013-03-19T19:31:19.310 回答
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 采用大小对象而不是单个尺寸。

于 2013-03-19T19:42:10.090 回答