我在这里有2个LINQ查询,我只是想知道哪些查询是正确和快速使用的。
样本I
var GetUSer = (from UserItem in dbs.users
where UserItem.UserID == UserID
select new User(UserItem))
.OrderBy(item => item.FirstName)
.Skip(0)
.Take(10)
.ToList();
样本II
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();
虽然它们都运作良好,但我只是想知道哪个是最好的。
答案 0 :(得分:0)
在这两者之间,我更喜欢第一个(为了便于阅读,如果你想让整个查询在数据库中执行,你需要切换一些东西)。如果它们都有效,那么它取决于你。
就个人而言,我不喜欢将查询语法与lambda语法混合,如果我不必,我更喜欢lambda。我会写它像:
var GetUsers = db.user
.Where(u => u.UserID == UserID)
.OrderBy(u => u.FirstName)
.Take(10)
.Select(u => new User(u))
.ToList();
这使用单一语法,在数据库中尽可能多地进行查询,并省去任何多余的调用。
答案 1 :(得分:0)
第二个更好,第一个做一个选择然后进行过滤,这意味着它必须先从数据库中获取数据,然后将其转换为User对象,然后进行过滤。
第二个将在数据库端进行查询,然后将其转换为用户对象
可以通过将选择移动到ToList()
之前来修复第一个