0

我在这里有 2 个 LINQ 查询,我只想知道这些查询中的哪一个是正确且快速使用的。

样品一

var GetUSer = (from UserItem in dbs.users
               where UserItem.UserID == UserID
               select new User(UserItem))
               .OrderBy(item => item.FirstName)
               .Skip(0)
               .Take(10)
               .ToList();

样品二

var GetUSer = (from UserITem in dbs.user
                 .Where(item => item.UserID == UserID)
                 .OrderBy(item => item.FirstName)
                 .Skip(0)
                 .Take(10)
                 .AsEnumerable()
               select new User(UserItem)).ToList();

尽管它们都运行良好,但我只想知道哪个是最好的。

4

2 回答 2

0

在这两者之间,我更喜欢第一个(为了可读性,如果您希望整个查询在数据库中执行,则需要切换一些东西)。如果他们都工作,这取决于你。

就个人而言,我不喜欢将查询语法与 lambda 语法混合,如果我不需要的话,我更喜欢 lambda。我会这样写:

var GetUsers = db.user
                 .Where(u => u.UserID == UserID)
                 .OrderBy(u => u.FirstName)
                 .Take(10)
                 .Select(u => new User(u))
                 .ToList();

这使用单一语法,尽可能多地在数据库中查询,并省略任何多余的调用。

于 2012-11-20T02:36:51.440 回答
0

第二个更好,第一个 1 进行选择然后进行过滤,这意味着它必须先从数据库中获取数据才能将其转换为用户对象,然后再进行过滤。

第二个将在数据库端进行查询,然后将其转换为用户对象

第一个可以通过将选择移动到 ToList() 之前来修复

于 2012-11-20T02:36:59.647 回答