LINQ Lambda Join, с двумя или более полями присоединения - PullRequest
0 голосов
/ 20 декабря 2018

Я новичок в C #, я пытаюсь объединить в группы более одного поля в качестве ключей, используя LINQ, используя методы Extension, но безуспешно.

Мой класс

public class NewStruct
    {
        public string newId { get; set; }
        public IEnumerable<Table2> newTable2 { get; set; }
    }

Мой код

var context = new MyDBContex();

IQueryable<NewStruct> list = context.Table1
    .GroupJoin(context.Table2,
        e => new { e.Id1, e.Id2, e.Datefield },
        q => new {q.Id1, q.Id2, e.Datefield },
    (t1, t2) => new NewStruct { newId= t1.Id1, newTable2 = t2 });

это вызовет ошибку

Error   CS0411  The type arguments for method 'Queryable.GroupJoin<TOuter, TInner, TKey, TResult>(IQueryable<TOuter>, IEnumerable<TInner>, Expression<Func<TOuter, TKey>>, Expression<Func<TInner, TKey>>, Expression<Func<TOuter, IEnumerable<TInner>, TResult>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

, но когда поле условия для объединениятолько один такой

IQueryable<NewStruct> list = context.Table1
    .GroupJoin(context.Table2,
        e => e.Id1,
        q => q.Id1,
    (t1, t2) => new NewStruct { newId= t1.Id1, newTable2 = t2 });

это без ошибок

Что я сделал не так?

Заранее спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Я нашел обходной путь, код должен понравиться,

IQueryable<NewStruct> list = context.Table1
    .GroupJoin(context.Table2,
        e => new { id1 = e.Id1, id2 = e.Id2, dt = e.Datefield },
        q => new { id1 = q.Id1, id2 = q.Id2, dt = e.Datefield },
    (t1, t2) => new NewStruct { newId= t1.Id1, newTable2 = t2 });

спасибо всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...