Tag: linq to entities

.Include()。Where()。Linq to Entities Query中的.Select()

我有一个查询下表的Linq查询:具有一对多链接的任务:TaskLinks和TaskLinks具有指向实体的表的一对一链接。 我正在尝试选择任务,急切加载(通过.Include)TaskLinks并选择链接到TaskLink的实体。 但是我需要过滤Task(通过Access Level int)和TaskLinks,这样我就不会包含任何Inactive(bool)记录。 这是我的Linq查询: Tasks.Where(t => t.AccessLevel tl.TaskLinks.Where(tl2=> tl2.IfInactive == false) .Select(tls => tls.Entity)) 我在LinqPad中运行此查询,我收到以下错误,我不明白: ArgumentException:Include路径表达式必须引用在类型上定义的导航属性。 使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。 参数名称:路径 如何重新编写此查询以便我可以过滤包含的任务链接,并选择实体? 先感谢您!! 短发

LINQ有条件地添加加入

我有一个LINQ查询,我试图从2个表返回数据,但我加入的表是有条件的。 这就是我想做的事情: if (teamType == “A”){ var query = from foo in context.People join foo2 in context.PeopleExtendedInfoA select foo; } else { var query = from foo in context.People join foo2 in context.PeopleExtendedInfoB select foo; } 然后我会进一步过滤查询。 我显然无法以这种方式设置它,因为我无法访问if块之外的“查询”,但它显示了我正在尝试做的事情。 这是我稍后尝试使用查询执行的示例: if (state != null) { query = query.Where(p => p.State == state); } if (query != […]

成员“在LINQ to Entities中不受支持”

所以我是C#,LINQ和MVC的新手。 我试图得到一个年龄列表,但它说 LINQ to Entities不支持指定的类型成员’Age’。 仅支持初始化程序,实体成员和实体导航属性。 对于之前的教程,他们使用这个完全相同的逻辑,除了他们检查字符串,而不是int(年龄)。 为什么这会让我感到健康,我该如何解决? public ActionResult SearchIndex(string ageValue, string searchString) { if (!string.IsNullOrEmpty(ageValue)) { var AgeList = new List(); var AgeListQry = from d in db.Actors orderby d.Age select d.Age.ToString(); AgeList.AddRange(AgeListQry.Distinct()); } // other stuff } 我想知道发生了什么,以便将来可以避免这种情况! 实体模型代码 public class Actor { public int ID { get; set; } public string […]

使用Entity Framework将多行插入表中

我和EF玩得很开心。 最初我使用标准linq的以下代码,基本上将一些数据输入到表中。 ManagePreferencesDataContext manpref = new ManagePreferencesDataContext(); tblManagePreference prefMemberID = new tblManagePreference(); { prefMemberID.Username = CreateUserWizard1.UserName; prefMemberID.MemberID = tbxMemberID.Text.ToString(); prefMemberID.LocationID = tbxLocationID.Text.ToString(); prefMemberID.Preference = “MemberID”; } tblManagePreference prefLocationID = new tblManagePreference(); { prefLocationID.Username = CreateUserWizard1.UserName; prefLocationID.MemberID = tbxMemberID.Text.ToString(); prefLocationID.LocationID = tbxLocationID.Text.ToString(); prefLocationID.Preference = “LocationID”; } List ie = new List(); ie.Add(prefMemberID); ie.Add(prefLocationID); manpref.tblManagePreferences.InsertAllOnSubmit(ie); manpref.SubmitChanges(); 现在,我试图使用EF复制相同或相似的代码并完全解开。 […]

如何在Linq到EF中使用Expression <Func >的条件?

关于这个主题已经存在一些问题(例如entity framework中的Expression.Invoke? ),但是,我无法找到适合我具体情况的答案。 我想定义一个这样的方法: public IQueryable GetCustomers(Expression<Func> condition) { return from p in ctx.Customers.AsExpandable() where condition.Compile()(p) select p; } AsExpandable方法来自LinqKit(正如之前提到的线程中所建议的那样)。 但是,当我尝试像他的方式调用我的方法时: var customers = GetCustomers(c => c.ID == 1); 它抛出InvalidCastException: 无法将类型为“System.Linq.Expressions.InstanceMethodCallExpressionN”的对象强制转换为“System.Linq.Expressions.LambdaExpression”。 我究竟做错了什么?

IEnumerable ,Arity和Generic Type Definitions

我有一个class级计数器 ,用钥匙计算东西。 简化: public class Counter { private Dictionary counts; public void Increment(T key) { int current; bool exists = counts.TryGetValue(key, out current); if (exists) { counts[key]++; } else { counts[key] = 1; } } } 它还有许多其他专门针对我需求的东西,但这才是最重要的。 到目前为止,它的效果很好。 现在我想让它在Linq查询中使用(包含键和值)。 做到这一点,我认为我需要实施 IEnumerable 所以我补充说: public class Counter : IEnumerable<KeyValuePair> { // … IEnumerator<KeyValuePair> IEnumerable<KeyValuePair>.GetEnumerator() { return ((IEnumerable<KeyValuePair>)counts).GetEnumerator(); […]

entity frameworkToString方法

以下代码块抛出错误。 LINQ to Entities无法识别方法’System.String ToString()’方法,并且此方法无法转换为存储表达式。 db.tbOnIgmHawbDetails .Where(s => !db.tbImpoExaminations.Any(x => x.Hawb.ToString() == s.Hawb) && s.AwbNo == p) .Select(s => s.Hawb).ToList(); 有什么建议吗? 为什么会这样,解决方案是什么?

如何使用通用存储库模式按类型有条件地过滤IQueryable

我的通用存储库中有一个返回IQueryable : public virtual IQueryable All { get { DbSet set = Context.Set(); if (typeof(T).IsSubclassOf(typeof(OrganisationDependent))) return set.AsEnumerable() .Cast() .Where(x => x.OrganisationID == CurrentOrganisationID) .AsQueryable() .Cast(); return set; } } if语句的原因是大多数但不是所有表都有OrganisationID ,我想确保用户只看到他们所属组织的数据。 上面的代码工作,但为了使它工作,我不得不添加AsEnumerable()将数据拉入内存。 没有它,我收到错误消息 “无法将类型’Models.xxx’强制转换为’Models.OrganisationDependent’.LINQ to Entities仅支持转换EDM原语或枚举类型” 我的所有实体都直接inheritanceModelBase或OrganisationDependent : public abstract class OrganisationDependent : ModelBase { public int OrganisationID { get; set; } public virtual Organisation […]

使用LINQ-to-Entities选择父对象时对子对象进行排序

想象一下,你有一些看起来像这样的Entity Framework实体(显然不是这些特定的类,而是带有所有Entity Framework管道的自动生成的实体;这些只是为了说明): public class Parent { public int ID { get; set; } public List Children { get; set; } } public class Child { public int ID { get; set; } public Parent Parent { get; set; } public int Number { get; set; } } 我有一个LINQ查询,如下所示: from parent in context.Parents.Include(“Child”) select parent […]

如何使用对象上下文在Entity Framework中使用批量插入?

我想使用Object Context而不是DbContext来调用entity framework6中的批量插入。我该怎么做? 我想做点什么 readonly ObjectContext obContext : public void BulkInsert(IEnumerable items) where T : class, new() { obContext.BulkInsert(items); } 但我无法做到这一点。