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)
这两者之间是否有任何区别,或者一方面有什么特别的好处呢?
在Linq to Entity中,究竟做.AsExpandable()了什么?在哪里以及为何使用它?它是否包含所有相关实体进入延迟加载的查询?
我正在尝试提供一种基于过滤器返回目录的服务。
我在互联网上看到了一些结果,但是我的问题却还不是。我希望你能帮助我。
问题是此查询版本无法转换为商店表达式:
“ LINQ to Entities无法识别方法'System.Linq.IQueryable'1 [App.Data.Models.Subgroup] HasProductsWithState [Subgroup](System.Linq.IQueryable'1 [App.Data.Models.Subgroup],系统。 Nullable'1 [System.Boolean])方法,并且该方法不能转换为商店表达式。
我如何做到这一点,以便可以将查询转换为商店表达式。请不要提出建议.ToList(),因为我不希望它在内存中运行。
所以我有:
bool? isActive = null;
string search = null;
DbSet<Maingroup> query = context.Set<Maingroup>();
var result = query.AsQueryable()
.HasProductsWithState(isActive)
.HasChildrenWithName(search)
.OrderBy(x => x.SortOrder)
.Select(x => new CatalogViewModel.MaingroupViewModel()
{
Maingroup = x,
Subgroups = x.Subgroups.AsQueryable()
.HasProductsWithState(isActive)
.HasChildrenWithName(search)
.OrderBy(y => y.SortOrder)
.Select(y => new CatalogViewModel.SubgroupViewModel()
{
Subgroup = y,
Products = y.Products.AsQueryable()
.HasProductsWithState(isActive)
.HasChildrenWithName(search)
.OrderBy(z => z.SortOrder)
.Select(z => new CatalogViewModel.ProductViewModel()
{
Product = z
})
}) …Run Code Online (Sandbox Code Playgroud) 我试图创建满足两个条件之一的笔记列表。1.与创建的用户匹配。2.或与连接链接。
使用以下代码将返回异常。我知道对于Linq来说,表达是很常见的。但是我的问题是,可以使用哪些替代方法代替现有方法?
“ LINQ to Entities无法识别方法'Boolean Exists(System.Predicate`1 [Entities.Connection])',并且该方法无法转换为商店表达式。”
_context.Notes
.Include(t => t.Connections)
.Where(t => t.CreatedUserId == userId || t.Connections.ToList().Exists(c => c.UserId == userId))
Run Code Online (Sandbox Code Playgroud) 我有个问题.我在Visual Studio中创建了一个数据实体模型.在林克;
Guid RtuDataId = db.RtuData.Where(x => x.CommunicationUnit.Id == new Guid(ID))
.OrderByDescending(x => x.ReadOn)
.LastOrDefault().Id;
Run Code Online (Sandbox Code Playgroud)
我得到错误;
无法识别方法...方法,并且此方法无法转换为商店表达式.
我在谷歌搜索但我不明白这个错误.
我尝试按编号订购部门,但由于部门编号作为字符串存储在数据库中,我不能只使用按编号订购。我尝试将其解析为浮点数,但没有奏效。然后我尝试将其解析为 Double。那也行不通。有什么建议?以下是我的代码。
using (var db = new Context())
{
var datasource = (from x in db.Departments
orderby double.Parse(x.DepartmentNumber)
select x).ToList();
lvData.DataSource = datasource;
lvData.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
感谢您的回答,我做了以下操作,但结果并不完全正确。
var datasource = (from x in db.Departments orderby x.DepartmentNumber select x).ToList().OrderBy(Department => float.Parse(Department.DepartmentNumber));
Run Code Online (Sandbox Code Playgroud)