2
내 요구 사항은 IQueryable Join이 될 일반 조인 메서드를 구현하는 것입니다. 아래 그림과 같이LINQ 일반 조인 및 엔터티 프레임 워크
var q = Join(e1, e2, "Company_ID", "Company_ID",
"new (outer.Company_ID as CompanyId)" );
하지만 난 오류를 얻을 : 나는이 방법을 가입 사용한
public static IQueryable Join(this IQueryable outer, IEnumerable inner, string outerSelector, string innerSelector, string resultsSelector, params object[] values)
{
if (inner == null) throw new ArgumentNullException("inner");
if (outerSelector == null) throw new ArgumentNullException("outerSelector");
if (innerSelector == null) throw new ArgumentNullException("innerSelector");
if (resultsSelector == null) throw new ArgumentNullException("resultsSelctor");
System.Linq.Expressions.LambdaExpression outerSelectorLambda = DynamicExpression.ParseLambda(outer.ElementType, null, outerSelector, values);
System.Linq.Expressions.LambdaExpression innerSelectorLambda = DynamicExpression.ParseLambda(inner.AsQueryable().ElementType, null, innerSelector, values);
System.Linq.Expressions.ParameterExpression[] parameters = new System.Linq.Expressions.ParameterExpression[] {
System.Linq.Expressions.Expression.Parameter(outer.ElementType, "outer"), System.Linq.Expressions.Expression.Parameter(inner.AsQueryable().ElementType, "inner") };
System.Linq.Expressions.LambdaExpression resultsSelectorLambda = DynamicExpression.ParseLambda(parameters, null, resultsSelector, values);
return outer.Provider.CreateQuery(
System.Linq.Expressions.Expression.Call(
typeof(Queryable), "Join",
new Type[]
{
outer.ElementType,
inner.AsQueryable().ElementType,
outerSelectorLambda.Body.Type,
resultsSelectorLambda.Body.Type
},
outer.Expression,
inner.AsQueryable().Expression,
System.Linq.Expressions.Expression.Quote(outerSelectorLambda),
System.Linq.Expressions.Expression.Quote(innerSelectorLambda),
System.Linq.Expressions.Expression.Quote(resultsSelectorLambda)));
}
//The generic overload.
public static IQueryable<T> Join<T>(this IQueryable<T> outer, IEnumerable<T> inner, string outerSelector, string innerSelector, string resultsSelector, params object[] values)
{
return (IQueryable<T>)Join((IQueryable)outer, (IEnumerable)inner, outerSelector, innerSelector, resultsSelector, values);
}
아래와 같이
아래 그림과 같이 내가 가입 방법을 사용했다
'System.Linq.Queryable'형식의 일반 메서드 '조인'이 제공된 형식 인수 및 인수와 호환됩니다. 메소드가 비 제네릭 일 경우 형식 인수가 제공되지 않아야합니다.
도와주세요.
'Queryable'대신 'IQueryable'을 사용해보십시오. – Enigmativity
잘 작동하지 않습니다. 오류는 'System.Linq.IQueryable'형식의 'Join'메서드가 없습니다. – Mahadesh
'using System.Linq; '가 누락 되었습니까? –