相关疑难解决方法(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万
查看次数

使用IEnumerable和IQueryable作为一种ObjectSet时的差异

据我所知,当我使用LINQ扩展方法(使用lambda表达式语法)时IQueryable,实际上ObjectSet它们被转换为LINQ to SQL查询.我的意思是那个命令

IQueryable<User> users = db.UserSet;
var users32YearsOld = users.Where(user => user.Age == 32);
Run Code Online (Sandbox Code Playgroud)

与...完全相同

IQueryable<User> users = db.UserSet;   
var users32YearsOld = from user in users where user.Age == 32 select user;
Run Code Online (Sandbox Code Playgroud)

因此,它们users32YearsOld不会在数据库中出现,直到它们被枚举为循环等.(希望我能正确理解这一点).

但是,到底是怎么回事,如果我不掩盖这样的事情发生ObjectSetIQueryable,但作为IEnumerable?那么它的类型是IEnumerable什么?

IEnumerable<User> users = db.UserSet;
var users32YearsOld = users.Where(user => user.Age == 32);
Run Code Online (Sandbox Code Playgroud)

它会立即打到数据库(如果是这样的话,那么?在第一行或第二行)?或者它是否会像上一个命令一样,users32YearsOld在枚举之前不会命中数据库?如果我使用以下代码会有什么不同吗?

IEnumerable<User> users = db.UserSet;
var users32YearsOld = from user in users where user.Age == 32 select …
Run Code Online (Sandbox Code Playgroud)

.net c# ienumerable entity-framework iqueryable

7
推荐指数
2
解决办法
7808
查看次数

有条件地加入LINQ

我想创建一个相当于a的LINQ join语句 Left Join

我的表设置如下:

Recipe
    RecipeID
    ...

Instruction
    RecipeID
    StepID
    SomeFlag
    ...
Run Code Online (Sandbox Code Playgroud)

等效SQL:

SELECT *
FROM Recipe r
LEFT JOIN Instruction i
    ON r.RecipeID = i.RecipeID
    AND SomeFlag > 0
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

var tmp = db.Recipe
    .GroupJoin(
        db.Instruction,
        r => r.RecipeID,
        i => i.RecipeID,
        (r, i) => new {r, i},
        ???);
Run Code Online (Sandbox Code Playgroud)

首先,GroupJoin这种操作的正确选择是什么?据我所知,Join相当于SQL'Internal Join',而GroupJoin相当于'Left Join'.第二,获得我想要的结果的正确语法是什么?我一直在寻找,我似乎无法使用扩展方法找到合适的答案.

c# linq

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

我在用什么?(LINQ/SQL)

我的项目目前用于"linq"的以下语法

 var le = domainModel.EntityDataContext.Table_name_here.Query()
                    .WithFullReadCheck(domainModel.Security)
                    .Where(x => x.Metadata.AdvisorID == advisorId).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

据说上面的代码是linq,没有意识到linq我决定学习它.但是,在https://msdn.microsoft.com/en-us/library/gg509017.aspx上,情况完全不同.

我的代码中使用了什么?它是linq的一个版本吗?还有别的吗?

c# linq

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

LINQ where和where方法集合之间的差异

与使用集合Where()方法相比,使用LinQ进行过滤是否有任何区别.

进一步来说,

第一

var numQuery = from num in numbers
               where (num % 2) == 0
               select num;
Run Code Online (Sandbox Code Playgroud)

第二

var numQuery = numbers.Where(num => num % 2 == 0);
Run Code Online (Sandbox Code Playgroud)

在上面的查询中,哪个更好?是否有任何性能考虑?

谢谢.

.net c# linq where

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

标签 统计

c# ×5

linq ×4

.net ×2

entity-framework ×1

ienumerable ×1

iqueryable ×1

where ×1