Tag: linq to entities

Linq到EF – 不支持的function

我正在使用Linq进行查询,由Entity Framework数据源提供支持。 我收到以下错误: LINQ to Entities无法识别方法’Double Sqrt(Double)’方法,并且此方法无法转换为存储表达式。 这是我的函数的简化版本(我的版本更复杂,使用ACos,sin,cos和其他C#Math类函数)。 var objects = from n in context.Products.Where(p => pr == r) let a = Math.Sqrt((double)n.Latitude) where a < 5 orderby a select n; return objects.Take(100).ToList(); 我认为问题可能与Linq to EF(和SQL数据源)与Linq to SQL相比具有有限的受支持function集的情况有关。 我对此比较陌生,所以我不是百分百肯定。 任何人都可以给我指向正确的方向吗? 干杯,

在LINQ中使用DateTime.Add(TimeSpan)

我必须像下面那样运行一个查询。 它实际上更复杂,但重要的部分是: var results = from b in _context.Bookings where b.ScheduleDate.Add(b.StartTime) >= DateTime.UtcNow select b; 但它给出了以下错误: LINQ to Entities无法识别方法’System.DateTime.Add方法(System.TimeSpan)’,并且此方法无法转换为商店表达式。 我该如何解决这个问题? 提前致谢。

EFCore Linq然后将两个外键包含在同一个表中

有谁看到我做错了什么? ProjectActivityTasks具有UnitOfMeasureId和ProjectActivityTaskTypeId 。 按照它的编写方式,它认为UnitOfMeasure转到ProjectActivityTaskType 。 在ThenInclude的UnitOfMeasure上ThenInclude了 ProjectActivityTaskType不包含UnitOfMeasure的定义 哪个是对的。 UnitOfMeasure转到ProjectActivityTasks 。 我正在引用此页面但它似乎没有这样工作: https : //docs.microsoft.com/en-us/ef/core/querying/related-data var qry = await _projectActivityRepository.GetAll() .Include(x => x.ProjectActivityVehicles) .ThenInclude(x => x.Vehicle) .Include(x => x.ProjectActivityTasks) .ThenInclude(x => x.ProjectActivityTaskType) .ThenInclude(x => x.UnitOfMeasure) .Where(x => x.Id == Id && x.TenantId == (int)AbpSession.TenantId) .FirstOrDefaultAsync();

应用基于多维数组的LINQfilter

给定entity framework查询,例如 var query = (from property in _dbContext.Properties join location in _db.Locations on property.Id equals location.PropertyId select new PropertyDetail { Url = property.Url, Type = property.Type, Title = property.Title, Continent = location.Continent, Country = location.Country, State = location.State, }); 我已应用filter,例如: if (!string.IsNullOrWhitespace(searchFilters.Type)) { query = query.Where(model => model.Type == searchFilters.Type); } if (!string.IsNullOrWhitespace(searchFilters.Title)) { […]

LINQ to SQL选择多列不同并返回整个实体

我正在使用第三方数据库,需要为我正在研究的特定市场选择一组不同的数据。 每个市场的数据都是相同的,因此将其全部用完是多余的,我不想硬编码任何逻辑,因为我们正在与供应商合作解决问题,但我们需要一个修复与供应商一起修复以及数据库当前的方式,因为它可能需要一段时间才能进行修复。 我不希望按任何方式进行分组,因为我想在最低级别获取数据,但我不想要任何冗余数据。 我当前的查询看起来与此类似…… determinantData = (from x in dbContext.Datas where x.Bar.Name.Equals(barName) && x.Something.Name.Equals(someName) && FooIds.Contains(x.Foo.Id) && x.Date >= startDate && x.Date <= endDate select x).Distinct(); 这不符合我的预期。 我想通过三个属性选择不同的记录,比如Foo , Bar和Something但返回整个对象。 我怎么能用LINQ做到这一点?

无法转换为LINQ to Entities存储表达式

我对LINQ to Entities相对较新,但是使用LINQ to Sql很多。 我正在使用Visual Studio 2013与EntityFramework 6和MVC 5。 两者之间最大的区别在于Linq2SQL能够在SELECT查询本身内执行转换,而LINQ2Entities并不宽容,并且必须在执行LINQ查询之前进行正确的转换。 因此,我收到错误: 类型’BillYeagerDB.EdmxExtensionMethods’上的指定方法’System.Decimal ConvertToDecimal(Byte)’无法转换为LINQ to Entities存储表达式。 在做了大量的研究之后,特别是在使用这个问题的stackoveflow上,我发现了一个链接( LINQ to Entities无法识别方法’Double Parse(System.String)’方法,并且这个方法无法转换为商店表达式 )工作。 我确定作者给出了作品的例子,但他正在使用ObjectContext,我正在使用DbContext。 我也相信它对我有用,但我想我只是错误地设计了扩展方法(这给了我上面的错误)。 请注意,此特定问题与Linq查询中的AvgRating变量有关。 一旦我能够使用它,我可以为任何其他转换执行相同类型的修复。 请注意, AvgRating定义为Decimal类型, a.Rating.RatingValue定义为类型Byte。 如果有人能够理顺我,我会非常感激。 这是我的代码。 我正在尝试使用以下查询,由于转换问题,我知道这些查询无效(如前所述)。 原始LINQ查询: namespace BillYeagerDB { public class BillYeagerDB { public async Task<List> GetRestaurantListAsync() { try { using (BillYeagerEntities DbContext = new BillYeagerEntities()) { DbContext.Database.Connection.Open(); […]

如何使用LINQ to Entities获取字节数组长度?

我有一个Document类,它将该文档的数据存储为字节数组。 我需要使用LINQ to Entities来检查数组的大小。 我尝试过以下方法: [long Linq query here…] o.Data.Length < 800000) 问题是我得到以下exception: LINQ to Entities中不支持LINQ表达式节点类型’ArrayLength’。“ 有没有其他方法来检查字节数组的大小?

linq给实体生成了sql

我在ado.netentity framework中的实体中遇到了一些问题。 基本上我正在做的是这样的: var results = (from c in companies where c.Name.StartsWith(letter) select c); 并将其转换为SQL,如: WHERE (CAST(CHARINDEX(@p, [Extent1].[Name]) AS int)) = 1 这很好,但我的表有数百万的记录,所以这运行非常慢。 我需要它生成的是: WHERE Name LIKE @p + ‘%’ 我搜索高低,除了使用存储过程或使用实体sql之外,找不到任何解决方案… 有没有办法通过linq做到这一点? 可能通过某种方式将linq扩展到实体linq提供程序,或以某种方式拦截命令树或生成的查询?

检测具有相同子项的实体

我有两个实体, Class和Student ,以多对多关系链接。 从外部应用程序导入数据时,遗憾的是一些类是一式两份创建的。 “重复”类具有不同的名称,但是相同的主题和相同的学生。 例如: {Id = 341,Title =’10rs / PE1a’,SubjectId = 60,Students = {Jack,Bill,Sarah}} {Id = 429,Title =’10rs / PE1b’,SubjectId = 60,Students = {Jack,Bill,Sarah}} 匹配这些重复类的名称没有一般规则,因此识别这两个类是重复的唯一方法是它们具有相同的SubjectId和Students 。 我想使用LINQ来检测所有重复项(并最终合并它们)。 到目前为止,我尝试过: var sb = new StringBuilder(); using (var ctx = new Ctx()) { ctx.CommandTimeout = 10000; // Because the next line takes so long! var allClasses […]

Linq to Entity比较字符串忽略空格

当使用linq实体进行字符串比较时,将忽略空格。 在我的表中,我有一个nchar(10)列,因此如果不是10个字符,任何数据都将用空格填充其余数据。 下面我将“ncharTextColumn”与”Four”字符串进行比较。 甚至认为ncharText将等于”Four “它导致匹配,“结果”变量将包含1条记录 TestEntities1 entity = new TestEntities1(); var result = entity.Table_1.Where(e => e.ncharText == “Four”); 有没有解释这个和解决它的方法或我将不得不在任何comaprisons之前调用我的查询ToList。 var newList = result.ToList().Where(e => e.ncharText == “Four”); 此代码现在正确地返回0记录,因为它考虑了空格。 但是,在比较之前调用list可能会导致将大型集合加载到内存中,而这些内存最终不会被使用。