gpt4 book ai didi

Linq to SQL 在外部构造自定义对象

转载 作者:行者123 更新时间:2023-12-02 00:31:01 26 4
gpt4 key购买 nike

我想实现以下目标:

return  (from a in db.Tags
select new TagItem
{
ID = a.Id,
Name = a.Name
});

..但我不想那样实现它,因为我需要在其他地方使用完全相同的 TagItem 构造(用于连接)

这就是我的意图,调用一个为我构建 TagItem 的方法:

return (from a in db.Tags
select ConstructTagItem(a));

并且该方法以相同的方式构造对象:

private TagItem ConstructTagItem(Tag a)
{
return new TagItem { ID = a.Id, Name = a.Name};
}

但这给了我以下错误:

Method 'TagItem ConstructTagItem(Tag)' has no supported translation to SQL.

有什么办法可以实现吗?

解决方案(感谢 Daniel Hilgarth):

return db.Tags.Select(ConstructTagItem);

方法:

private Expression<Func<Tag, TagItem>> ConstructTagItem
{
get { return a => new TagItem {ID = a.Id Name = a.Name }; }
}

最佳答案

是的,有。您需要使用这样的表达式树:

Expression<Func<Tag, TagItem>> constructTagItem = a => return new TagItem
{ ID = a.Id,
Name = a.Name};

然后您可以使用该表达式代替您的方法:

return db.Tags.Select(constructTagItem);

根据 this article您需要使用方法链方式来定义您的查询。

关于Linq to SQL 在外部构造自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6760986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com