相关疑难解决方法(0)

流利和查询表达 - 一个优于其他人的利益吗?

LINQ是对.NET以来最伟大的改进之一,它可以节省大量的时间和代码行.但是,对于我来说,流畅的语法似乎比查询表达式语法更自然.

var title = entries.Where(e => e.Approved)
    .OrderBy(e => e.Rating).Select(e => e.Title)
    .FirstOrDefault();

var query = (from e in entries
             where e.Approved
             orderby e.Rating
             select e.Title).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这两者之间是否有任何区别,或者一方面有什么特别的好处呢?

c# linq

247
推荐指数
8
解决办法
6万
查看次数

Aggregate是否存在致命缺陷,因为每个into子句是单独执行的?

Aggregate当用作具有多个Into子句的Linq表达式的第一个(外部)子句时,VB.NET的查询是否存在致命缺陷,因为每个Into子句是单独执行的?

SELECT MIN(ZoneMin), MAX(ZoneMin) FROM PlantLINQ to SQL中的"明显"答案是

Dim limits = Aggregate p In Plants Select p.ZoneMin Into Min(), Max()
Run Code Online (Sandbox Code Playgroud)

但是,这个答案实际上在单独的 SQL查询中检索每个MinMax(以及如果包括其他聚合函数,如CountAverage).这可以在LINQPad中轻松看到.

是否存在LINQPad未显示的事务(或其他使这些查询成为原子的事件),或者这是一种等待发生的竞争条件?(因此,您必须执行上述问题的答案中显示的技巧,以强制返回多个聚合的单个查询.)

总之,是否使用LINQ-to-SQL查询Aggregate在单个(或至少"原子")查询中返回多个聚合函数?

(我也说"显而易见",因为对我来说显而易见的答案Aggregate p In Plants Into Min(p.ZoneMin), Max(p.ZoneMin),实际上检索了整个表两次,即使在优化后,然后使用Linq-to-Entities MinMax获得结果:-()

我认为Aggregate不是特定于VB的,但看起来C#没有这个查询表达式,所以我将更改为.

linq vb.net aggregate aggregate-functions linq-to-sql

12
推荐指数
1
解决办法
976
查看次数

在LINQ扩展方法中指定泛型类型的原因

只是出于好奇:

许多LINQ扩展方法存在的通用和非通用的变种,例如AnyAny<>,WhereWhere<>等写我的疑问,我通常使用非通用变种,它工作正常.

当必须使用通用方法时会出现什么情况?

---编辑---

PS:我知道内部只调用泛型方法,编译器尝试<>在编译期间解析通用括号的内容.我的问题是什么案例然后必须明确提供类型而不依赖编译器的直觉?

c# linq generics extension-methods

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

为什么C#没有像VB这样的Handles子句?

在VB中,我们有Handles子句,它允许将Handler添加到控件的事件中,而不将其放入xaml文件中(直接放入VB文件中).

XAML:

<Button x:Name="myButton" />
Run Code Online (Sandbox Code Playgroud)

VB:

Private Sub Button_Click() Handles myButton.Click

End Sub
Run Code Online (Sandbox Code Playgroud)

可以使用该做的好处之一是使用Visual Studio的下拉列表中自动添加事件,而不需要去XAML文件,并改变它的可能性.阅读这个问题(和答案),以便更好地理解我在说什么:

Visual Studio 2010显示来自代码的可用事件

这个问题的答案并没有具体说明为什么C#没有在Visual Studio中这个功能,但很明显对我来说:因为它使用了Handles子句对代码隐藏添加事件C#不具备此功能.

我知道我们可以使用+ =并在构造函数上手动添加事件,在InitializeComponent下面(这几乎是同一件事),但是VB也有AddHandler可以在构造函数(以及其他地方)上添加事件,并且它不是自动的,对我来说不如Handles条款可靠.

我的问题是:

为什么它从未实施?这不可靠吗?非安全?有什么解决方法吗?

c# vb.net wpf events xaml

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