标签: lambda

实体框架 - 无法将lambda表达式转换为类型'string',因为它不是委托类型

我在基于C#的代码中使用Entity Framework.我遇到了意想不到的怪异,正在寻找建议.

案例1,2,3,4 ......项目:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll

样本(所有这些工作):
RivWorks.Alpha.dll:

public static bool EndNegotitation(long ProductID)
{
    var product = (from a in _dbFeed.AutoWithImage 
                   where a.AutoID == ProductID select a).FirstOrDefault();
...
}
Run Code Online (Sandbox Code Playgroud)

RivWorks.Service.dll

public static RivWorks.Model.NegotiationAutos.AutoWithImage 
    GetProductById(long productId)
{
    var myProduct = from a in _dbFeed.AutoWithImage 
                    where a.AutoID == productId select a;

    return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage> 
    GetProductByCompany(Guid companyId)
{
    var myProduct = from a in _dbFeed.AutoWithImage 
                    where a.CompanyID == companyId select a;

    return myProduct.ToList();
}
Run Code Online (Sandbox Code Playgroud)

等等

案例"怪异":
RivWorks.Web.Service.dll(WCF项目)
包含与其他项目相同的引用.

public …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda entity-framework

72
推荐指数
5
解决办法
8万
查看次数

Dispatcher.BeginInvoke:无法将lambda转换为System.Delegate

我正试着打电话System.Windows.Threading.Dispatcher.BeginInvoke.方法的签名是这样的:

BeginInvoke(Delegate method, params object[] args)
Run Code Online (Sandbox Code Playgroud)

我试图传递一个Lambda而不是创建一个Delegate.

_dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } );
Run Code Online (Sandbox Code Playgroud)

它给了我一个编译错误说我

无法将lambda转换为System.Delegate.

委托的签名将对象作为参数并返回void.我的lambda匹配这个,但它不起作用.我错过了什么?

c# wpf lambda dispatcher begininvoke

72
推荐指数
5
解决办法
4万
查看次数

如何比较两个函数的等价性,如(λx.2*x)==(λx.x+ x)?

有没有办法比较两个函数的相等性?例如,(?x.2*x) == (?x.x+x)应该返回true,因为那些显然是等价的.

lisp lambda haskell functional-programming clojure

71
推荐指数
4
解决办法
2万
查看次数

来自Pylint的Cell-var-from-loop警告

对于以下代码:

for sort_key, order in query_data['sort']:
    results.sort(key=lambda k: get_from_dot_path(k, sort_key),
                 reverse=(order == -1))
Run Code Online (Sandbox Code Playgroud)

Pylint报告错误:

循环中定义的单元变量sort_key(cell-var-from-loop)

任何人都可以暗示这里发生了什么吗?从pylint源代码描述是:

闭包中使用的变量在循环中定义.这将导致所有闭包对闭合变量使用相同的值.

但我不知道这意味着什么.谁能举一个这个问题的例子?

python lambda closures

71
推荐指数
2
解决办法
2万
查看次数

Task.Run with Parameter(s)?

我正在开展一个多任务网络项目,我是新手Threading.Tasks.我实现了一个简单的Task.Factory.StartNew(),我想知道我该怎么做Task.Run()?

这是基本代码:

Task.Factory.StartNew(new Action<object>(
(x) =>
{
    // Do something with 'x'
}), rawData);
Run Code Online (Sandbox Code Playgroud)

我System.Threading.Tasks.Task在对象浏览器中查看,我找不到Action<T>类似的参数.只有Action这需要void参数,没有类型.

只有两件事情similiar:static Task Run(Action action)和static Task Run(Func<Task> function),但不能发布与两个参数(一个或多个).

是的,我知道我可以,但创建一个简单的扩展方法,我的主要问题是,我们可以把它写在一行用Task.Run()?

c# lambda task task-parallel-library

71
推荐指数
5
解决办法
11万
查看次数

从lambda列表<>中删除重复值的最快方法

什么是从列表中删除重复值的最快方法.假设List<long> longs = new List<long> { 1, 2, 3, 4, 3, 2, 5 };我很有兴趣使用lambda删除重复并返回:{1, 2, 3, 4, 5}.你的建议是什么?

c# lambda list generic-list c#-4.0

70
推荐指数
4
解决办法
15万
查看次数

C++ 11 std :: set lambda比较函数

我想std::set用自定义比较函数创建一个.我可以将它定义为一个类operator(),但我想享受定义使用它的lambda的能力,所以我决定在具有std::setas成员的类的构造函数的初始化列表中定义lambda函数.但我无法得到lambda的类型.在我继续之前,这是一个例子:

class Foo
{
private:
     std::set<int, /*???*/> numbers;
public:
     Foo () : numbers ([](int x, int y)
                       {
                           return x < y;
                       })
     {
     }
};
Run Code Online (Sandbox Code Playgroud)

我在搜索后找到了两个解决方案:一个,使用std::function.只需设置比较函数类型std::function<bool (int, int)>,就像我一样传递lambda.第二个解决方案是编写一个make_set函数,就像std::make_pair.

解决方案1:

class Foo
{
private:
     std::set<int, std::function<bool (int, int)> numbers;
public:
     Foo () : numbers ([](int x, int y)
                       {
                           return x < y;
                       })
     {
     }
};
Run Code Online (Sandbox Code Playgroud)

解决方案2:

template <class Key, class Compare>
std::set<Key, Compare> make_set (Compare compare) …
Run Code Online (Sandbox Code Playgroud)

c++ lambda stl c++11 std-function

70
推荐指数
3
解决办法
4万
查看次数

在Java 8中迭代枚举

是否可以Enumeration使用Lambda Expression 进行迭代?以下代码片段的Lambda表示形式是什么:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();

while (nets.hasMoreElements()) {
    NetworkInterface networkInterface = nets.nextElement();

}
Run Code Online (Sandbox Code Playgroud)

我没有在其中找到任何流.

java iteration lambda enumeration java-8

70
推荐指数
7
解决办法
5万
查看次数

Java 8,Streams查找重复元素

我试图列出整数列表中的重复元素,例如,

List<Integer> numbers = Arrays.asList(new Integer[]{1,2,1,3,4,4});    
Run Code Online (Sandbox Code Playgroud)

使用jdk的Streams 8.有没有人试过.要删除重复项,我们可以使用distinct()api.但是如何找到重复的元素呢?有人可以帮帮我吗?

java lambda java-8 java-stream

70
推荐指数
6
解决办法
11万
查看次数

为什么flatMap()之后的filter()在Java流中"不完全"懒惰?

我有以下示例代码:

System.out.println(
       "Result: " +
        Stream.of(1, 2, 3)
                .filter(i -> {
                    System.out.println(i);
                    return true;
                })
                .findFirst()
                .get()
);
System.out.println("-----------");
System.out.println(
       "Result: " +
        Stream.of(1, 2, 3)
                .flatMap(i -> Stream.of(i - 1, i, i + 1))
                .flatMap(i -> Stream.of(i - 1, i, i + 1))
                .filter(i -> {
                    System.out.println(i);
                    return true;
                })
                .findFirst()
                .get()
);
Run Code Online (Sandbox Code Playgroud)

输出如下:

1
Result: 1
-----------
-1
0
1
0
1
2
1
2
3
Result: -1
Run Code Online (Sandbox Code Playgroud)

从这里我看到,在第一种情况下stream真的表现得懒惰 - 我们使用findFirst()所以一旦我们有第一个元素我们的过滤lambda没有被调用.然而,在使用flatMaps的第二种情况下,我们看到尽管找到满足过滤条件的第一个元素(它只是任何第一个元素,因为lambda总是返回true),流的其他内容仍然通过过滤函数被馈送.

我试图理解为什么它表现得像这样,而不是在第一个元素计算后放弃,如第一种情况.任何有用的信息将不胜感激.

java lambda java-8 java-stream

70
推荐指数
4
解决办法
6190
查看次数