小编Eva*_*gle的帖子

Linq to SQL DynamicInvoke(System.Object [])'没有支持的SQL转换

我有一个班级,用户.

用户具有UserId属性.

我有一个看起来像这样的方法:

static IQueryable<User> FilterById(this IQueryable<User> p, Func<int, bool> sel)
{
   return p.Where(m => sel(m.UserId));
}
Run Code Online (Sandbox Code Playgroud)

当我调用函数时,不可避免地:

var users = Users.FilterById(m => m > 10);
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

方法'System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换.

有没有解决这个问题的方法?Expression.KillMeAndMyFamily()的兔子洞可能需要走多远?

为了澄清我为什么这样做:我使用T4模板自动生成一个简单的存储库和一个管道系统.在管道内,而不是写:

new UserPipe().Where(m => m.UserId > 10 && m.UserName.Contains("oo") && m.LastName == "Wee");
Run Code Online (Sandbox Code Playgroud)

我想生成类似的东西:

new UserPipe()
  .UserId(m => m > 10)
  .UserName(m => m.Contains("oo"))
  .LastName("Wee");
Run Code Online (Sandbox Code Playgroud)

c# lambda linq-to-sql

8
推荐指数
1
解决办法
3060
查看次数

Func <someType,someType =""> - 等号是什么意思?

Danny最初在回答Scott Hanselman最近的帖子时提出了这个问题:

谁可以告诉我这是什么:Func <Customer,bool ="">具有默认值的可选参数?布尔的空字符串?我用Func替换它,并在我的机器中得到不同的结果!一切都运作良好,我得到"where"声明,而不使用Expression!

我知道我也看到了这个Func的疯狂,但我似乎无法在C#4.0中获得这种类型的Func <>或Expression <Func <>>.

出于好奇,在Func中等号的含义是什么意思,如果有的话,并且在C#4.0中已经弃用了这个功能?

[这个问题来自Scott Hanselman的博客:" 每周源代码52 - 你继续使用LINQ,我认为这意味着你认为它意味着什么."]

c# lambda types c#-4.0

1
推荐指数
2
解决办法
1005
查看次数

标签 统计

c# ×2

lambda ×2

c#-4.0 ×1

linq-to-sql ×1

types ×1