<ion-item>
<ion-range min="1" max="4" snaps="true" [(ngModel)]="fontSize" class="fontSize">
<ion-label range-left style="font-size: 12px;">A</ion-label>
<ion-label range-right style="font-size: 20px;">A</ion-label>
</ion-range>
</ion-item>
<p class="fontSize" [ngClass]="{xs: fontSize===1, sm: fontSize===2, md: fontSize===3, lg: fontSize===4}">Teste</p>
上面的代码运行良好,因为它是使用Linq查询数组的简单方法。但是,当我尝试从以下位置更改时:
static void Main(string[] args)
{
var primes = Tuple.Create(2, 3, 5, 7, 11, 13);
var primes2 = new int[] { 2, 3, 5, 7, 11, 13};
var results = primes2.Where(p => p > 3);
foreach (int p in results)
Console.WriteLine(p);
Console.ReadKey();
}
进入
var results = primes2.Where(p => p > 3);
该代码将无法编译,因为它报告说没有为元组类型定义何处(如数组类型那样)。有没有一种解决方法,可以像使用linq查询数组一样使用linq查询元组?
答案 0 :(得分:3)
Tuple
代表一个对象,而不是一个集合。 Where
是用于集合的IEnumerable<TSource>
接口的扩展方法,因此您不能在Where
对象上调用Tuple
。
您必须使用实现IEnumerable<TSource>
的集合来携带Tuple
对象数据。
var primes = Tuple.Create(2, 3, 5, 7, 11, 13);
List<int> primes_li = new List<int>()
{
primes.Item1,
primes.Item2,
primes.Item3,
primes.Item4,
primes.Item5,
primes.Item6
};
var results = primes_li.Where(p => p > 3);
或使用反射通过GetProperties
对象通过Tuple
方法获取所有项目值。
var primes = Tuple.Create(2, 3, 5, 7, 11, 13);
var results = primes.GetType()
.GetProperties()
.Select(x => (int)x.GetValue(primes))
.Where(p => p > 3);
结果
5
7
11
13