我在基于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) 我正试着打电话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匹配这个,但它不起作用.我错过了什么?
有没有办法比较两个函数的相等性?例如,(?x.2*x) == (?x.x+x)应该返回true,因为那些显然是等价的.
对于以下代码:
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源代码描述是:
闭包中使用的变量在循环中定义.这将导致所有闭包对闭合变量使用相同的值.
但我不知道这意味着什么.谁能举一个这个问题的例子?
我正在开展一个多任务网络项目,我是新手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()?
什么是从列表中删除重复值的最快方法.假设List<long> longs = new List<long> { 1, 2, 3, 4, 3, 2, 5 };我很有兴趣使用lambda删除重复并返回:{1, 2, 3, 4, 5}.你的建议是什么?
我想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) 是否可以Enumeration使用Lambda Expression 进行迭代?以下代码片段的Lambda表示形式是什么:
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
NetworkInterface networkInterface = nets.nextElement();
}
Run Code Online (Sandbox Code Playgroud)
我没有在其中找到任何流.
我试图列出整数列表中的重复元素,例如,
List<Integer> numbers = Arrays.asList(new Integer[]{1,2,1,3,4,4});
Run Code Online (Sandbox Code Playgroud)
使用jdk的Streams 8.有没有人试过.要删除重复项,我们可以使用distinct()api.但是如何找到重复的元素呢?有人可以帮帮我吗?
我有以下示例代码:
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),流的其他内容仍然通过过滤函数被馈送.
我试图理解为什么它表现得像这样,而不是在第一个元素计算后放弃,如第一种情况.任何有用的信息将不胜感激.
lambda ×10
c# ×4
java ×3
java-8 ×3
java-stream ×2
.net ×1
begininvoke ×1
c#-4.0 ×1
c++ ×1
c++11 ×1
clojure ×1
closures ×1
dispatcher ×1
enumeration ×1
generic-list ×1
haskell ×1
iteration ×1
lisp ×1
list ×1
python ×1
std-function ×1
stl ×1
task ×1
wpf ×1