相关疑难解决方法(0)

LINQ to entities - 构建where子句以在多对多关系中测试集合

所以,我正在使用Linq实体框架.我有2个实体:ContentTag.他们彼此处于多对多的关系中.Content可以有很多Tags,Tag可以有很多Contents.所以我试图写一个查询来选择任何标签名称相等的所有内容blah

实体都将另一个实体的集合作为属性(但没有ID).这是我在努力的地方.我有一个自定义表达式Contains(所以,无论谁可以帮助我,你可以假设我可以为一个集合做一个"包含").我得到了这个表达式:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID = 2670710&SiteID = 1

编辑1

我最终找到了自己的答案.

c# linq lambda many-to-many entity-framework

18
推荐指数
1
解决办法
2万
查看次数

合并两个linq表达式

我有两个表达式在不同的时间构建,但需要合并才能获得where子句的准确"分组".我确实尝试过这个选项,但是我使用的是实体框架而且它不了解这个Invoke功能.我已经看到了一些ExpressionVisitor替代方案,但我不认为我对我需要做的事情有足够的了解.

如果有人能指出我正确的方向,我会非常感激,感觉它就在那里.

条款1A (对象类型Expression<Func<T, bool>>)

{parm => parm.Name.Contains("hat")}
Run Code Online (Sandbox Code Playgroud)

条款1B (对象类型LambdaExpression,但可以使用(Expression<Func<T, bool>>)LambdaExpression)

{parm => parm.Attributes.Any(parm => ((parm.Name == "test") AndAlso (parm.Value == "21")))}
Run Code Online (Sandbox Code Playgroud)

条款需要

{parm =>
 parm.Name.Contains("hat") (&&/||)
 parm.Attributes.Any(parm => ((parm.Name == "test") AndAlso (parm.Value == "21")))
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮我合并第1A条第1B条,我会非常感谢..

只是一个FYI Where()和Any()子句是从IQueryable获得的泛型方法,不确定是否重要.

Func<MethodInfo, bool> methodLambda = m => m.Name == "Any" && m.GetParameters().Length == 2;
MethodInfo method = typeof(Queryable).GetMethods().Where(methodLambda).Single().MakeGenericMethod(ActualQueryableType);

ParameterExpression parentMember = Expression.Parameter(typeof(T), "parentParm");

 // Create …
Run Code Online (Sandbox Code Playgroud)

c# linq expression entity-framework linq-expressions

4
推荐指数
1
解决办法
1873
查看次数