我是EF的新手,我正在尝试使用从我的数据库类型转换User为我的信息类的扩展方法UserInfo.
如果这有所作为,我首先使用数据库?
我的代码给出了错误
由于已经处理了DbContext,因此无法完成操作.
try
{
IQueryable<User> users;
using (var dataContext = new dataContext())
{
users = dataContext.Users
.Where(x => x.AccountID == accountId && x.IsAdmin == false);
if(users.Any() == false)
{
return null;
}
}
return users.Select(x => x.ToInfo()).ToList(); // this line is the problem
}
catch (Exception ex)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
我可以看到为什么它会这样做,但我也不明白为什么where语句的结果没有被保存到users对象中?
所以我想我的主要问题是为什么它不起作用,其次是什么是使用扩展方法和EF的正确方法?
找出哪些.net框架linq方法(例如.IEnumerable linq方法)使用延迟执行而不是使用延迟执行实现的最快方法是什么.
虽然编码很多次,但我想知道这个是否会以正确的方式执行.找出答案的唯一方法是访问MSDN文档以确保.会不会有更快的方式,任何目录,网络上的任何列表,任何备忘单,你可以分享的任何其他技巧?如果是,请这样做.这将有助于许多linq新手(像我一样)减少错误.唯一的另一个选择是检查文档,直到一个人使用它们足以记住(这对我来说很难,我往往不记得在某处记录的"任何东西",可以查找:D).
我正在使用linq到实体(EF).我有一个构造函数,它接受4个字符串参数.根据什么参数不为null,我必须构建linq查询.我可以使用if else语句,但我也有其他10个参数的构造函数,在这种情况下,将有许多组合要检查.
例:
Constructor(p1,p2,p3,p4)
{
var prod= from p in ctxt.products.expand("items\details")
where p.x==p1 && p.xx==p2 && p.xxx==p3 && p.xxxx==p4
select p;
}
Run Code Online (Sandbox Code Playgroud)
在上面的where子句中,只有当参数不为null时才应该进行条件检查.即,如果p2为null,那么where子句应如下所示
where p.x==p1 && p.xxx==p3 && p.xxxx==p4
Run Code Online (Sandbox Code Playgroud)
如果p2和p3为null则
where p.x==p1 && p.xxxx==p4
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何处理这个问题.如果可能的话,你可以为此提供示例代码
我正在尝试在LINQ-TO-SQL中创建以下查询。
select count(*), sum( o.CostInCents ) from Orders o
where Flag = true;
Run Code Online (Sandbox Code Playgroud)
我想出了以下LINQ查询:
var q = db.Orders
.Where(o => o.Flag )
var result = q
.GroupBy(o => 1)
.Select(g => new MyDTO
{
NoOfOrders = g.Count(),
TotalInCents = g.Sum(o => o.CostInCents )
})
.SingleOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
是.GroupBy(o => 1)即使OK?
另一个选择是执行两个查询,如下所示。
var q = db.Orders
.Where(o => o.Flag );
//No groupBy
var result2 = new MyDTO
{
NoOfCostedOrders = q.Count(),//hit the db
TotalInCents = q.Sum(o => o.CostInCents )//hit the …Run Code Online (Sandbox Code Playgroud) linq ×4
c# ×3
.net ×2
.net-3.5 ×1
dynamic ×1
ienumerable ×1
iqueryable ×1
linq-to-sql ×1
where-clause ×1