的名单我有一个LINQ查询,在奇异的作品2个值之间进行选择 - 那就是:的LINQ的ID
public static AmountRange GetAmountRange(int term)
{
return amountTable
.Where(x => term.IsBetween(x.MinTerm, x.MaxTerm))
.Select(x => new AmountRange(term, x.MinAmount, x.MaxAmount))
.First();
}
的IsBetween功能是一个简单的“廉政”扩展方法,这不正是它说什么。
我想要做的是做另一种接受'int []'作为初始参数的数组,以便我不会多次调用该查询。
如果这是一个单值的数组,我会简单地使用.Contains功能,但它不。
下面是一个使用.Contains的例子 - 但是,它不允许范围 - 只有一个值。需要将其转换为MinAmount和MaxAmount之间的术语IsBet。
public static IEnumerable<AmountRange> SelectAmountRange(int[] terms)
{
var termList = terms.ToList();
return amountTable.Where(t => termList.Contains(t.MinAmount))
.Select(x => new AmountRange(term would go here, x.MinAmount, x.MaxAmount))
.ToList();
}
因此,概括地说,我想实现如下:
- 传递int数组[](术语)作为参数。
- 选择所有的行,其中每个术语值落在表值 MinAmount和Max Amount之间。
我觉得你倒退了。更改函数返回列表。然后将.First()更改为.List()。 –
jdweng
@jdweng - bove的例子就是一个参数的存在 - 它不是新版本正在进行的工作。 –
你为什么要返回'First'而不是'ToList'?如果这是算法,你100%确定它的工作正确,那么我没有任何争论。我只是问,所以我可以提供正确的答案。 –