Добавить объект в словарь значение в LINQ? - PullRequest
1 голос
/ 29 марта 2012

Я получил следующий код:

private Dictionary<int?, byte[]> GetAllLocalScanFiles()
{
    using (DZine_IStylingEntities ctxLocal = new DZine_IStylingEntities())
    {
        _scanDictionaryLocal = ctxLocal.tblScan
                .Select(s => new { s.MEMBERID, s.scanFileAvatar })
                .AsParallel()
                .ToDictionary(s => s.MEMBERID, s => s.scanFileAvatar);
    }
    return _scanDictionaryLocal;
}

Я хочу изменить Ditionary на Dictionary<int?, ScanClass>

ScanClass - это объект

public class ScanClass
{
    public byte[] ScanFileAvatar { get; set; }
    public byte[] Hair { get; set; }
}

Возможно лидать объект для значения словаря?PS Я не хочу делать это с поиском.

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

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Похоже, вы, вероятно, хотите что-то вроде:

private Dictionary<int?, ScanClass> GetAllLocalScanFiles()
{
    using (DZine_IStylingEntities ctxLocal = new DZine_IStylingEntities())
    {
        return ctxLocal.tblScan
                 .Select(s => new { s.MEMBERID, s.scanFileAvatar, s.hair })
                 .AsParallel()
                 .ToDictionary(s => s.MEMBERID, s => new ScanClass {
                                   hair = s.hair,
                                   scanFileAvatar = s.scanFileAvatar
                               });
    }
}

Это предполагает, что у вас есть свойство hair в вашей исходной сущности.

Не ясно, что AsParallel действительно происходитчтобы помочь вам здесь, хотяВозможно, вы захотите использовать AsEnumerable() вместо этого, если у вас нет причины для распараллеливания этого.

1 голос
/ 29 марта 2012
_scanDictionaryLocal = ctxLocal.tblScan
    .ToDictionary(s => s.MEMBERID, s => new ScanClass() 
    { 
      ScanFileAvatar = s.scanFileAvatar,
      Hair = s.hair
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...