基本上我有一系列尺码.. 集合
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();
答案 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采用大小对象而不是单个维度。