1

我正在尝试使用单行 LINQ 语句将我的一个对象投影到我的 ViewModel 对象 - 它似乎不适用于select?? 编译器说cannot resolve symbol select。这适用于集合,为什么不在这里?如果没有select,我缺少什么关键字?

return from p in SettingRepository.Get(id)
       select new EditSetting
                {

                };

编辑- 从头开始​​,不适用于列表。我怎样才能做到这一点?

4

2 回答 2

1

通常我更喜欢使用以下模式创建方法。它不鼓励数据库调用的紧密循环,这会严重限制性能。Bryan Hong 的回答仍然是您问题的实际答案。

public IQueryable<EditSetting> GetEditSettings()
{
    return from p in SettingRepository
        select new EditSetting{
                Foo = p.Foo,
                Bar = p.Bar,
                //etc...
        };
}

或者

public IEnumerable<EditSetting> GetEditSettingsById(IList<string> ids)
{
    var ret =  from p in SettingRepository
            where ids.Contains(p.Id)
            select new EditSetting{
                    Foo = p.Foo,
                    Bar = p.Bar,
                    //etc...
            };
    return ret.ToList();
}
于 2013-05-16T04:47:45.530 回答
1

尽管我不确定您为什么要使用它select来执行此操作,但是如果您真的很坚持:

return from p in new List<EntityObject>{SettingRepository.Get(id)}
       select new EditSetting
                {

                };

如果不是,为什么不使用好的旧初始化程序?

var editSetting= new EditSetting { Id = setting.Id };
于 2013-05-16T03:04:10.850 回答