Как объединить два списка запросов linq разного типа в список нового типа? - PullRequest
0 голосов
/ 01 июня 2009

Я хочу объединить два списка разных типов в один список нового типа. Я бы использовал соединение, но если, например, в Списке А нет значения для этого общего свойства, я все же хочу использовать значения для Списка Б.

class A{
 decimal AValue
 DateTime Date
 int UserID
 }

class B{
 int BValue
 DateTime Date
 int UserID
 }

class Merge{
 decimal? Avalue
 int? BValue
 DateTime Date
 int UserID

 }

1 Ответ

0 голосов
/ 01 июня 2009

Если я правильно понимаю, это должно сделать это. Поскольку есть две даты на выбор, я выбрал одну из блистер.

Принимая alist в качестве IEnumerable и blist в качестве IEnumerable

РЕДАКТИРОВАТЬ: Предыдущий ответ был объединен неправильно, что допускает пустые значения для B части объединения Я обновил код, чтобы разрешить null A s вместо

blist
    .GroupJoin
    (
        alist,
        tb => tb.UserID,
        ta => ta.UserID,
        (tb, ta) => new {tb, ta}
    )
    .SelectMany
    (
        j => j.ta.DefaultIfEmpty(),
        (j, x) =>
        new Merge
            {
                AValue = x.AValue,
                BValue = j.tb.BValue,
                Date = j.tb.Date,
                UserID = j.tb.UserID
            }
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...