以下代码在 IEnumerable 类型中运行良好,但有没有办法使用 IQueryable 类型来对 SQL 数据库进行操作?
class Program
{
static void Main(string[] args)
{
var items = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
foreach (var item in items.Where(i => i.Between(2, 6)))
Console.WriteLine(item);
}
}
static class Ext
{
public static bool Between<T>(this T source, T low, T high) where T : IComparable
{
return source.CompareTo(low) >= 0 && source.CompareTo(high) <= 0;
}
}
var
关键字可以使代码更易读的绝佳示例。 - tvanfossonExpression key = Expression.Invoke(keySelector, keySelector.Parameters.ToArray());
。根据MSDN的说法,Invoke
只是使用提供的参数创建一个调用表达式。但这就是keySelector
已经具备的功能,而且我们仍然传递相同的参数。我们不能只删除key
并改用keySelector
吗? - Rob{ var key = keySelector(p); return low <=key && key <= high; }
而不是{ return low <= keySelector(p) && keySelector(p) <= high; }
但我实际上并不确定我得到的是否有这种效果。(有点时差反应...) - Jon Skeet