gpt4 book ai didi

Linq 和 SubSonic - 返回嵌套的复杂类型

转载 作者:行者123 更新时间:2023-12-04 14:43:05 24 4
gpt4 key购买 nike

我是 SubSonic 的新手,也是 LINQ 的新手,所以我只是想把一个小应用放在一起。

我已经对所有模板进行了排序并且运行正常,但是我在使用这个 LINQ 语句时遇到了一些麻烦(稍微简化了一些,真正的语句有一些其他的连接但它们不会影响这个特定的问题所以为了简洁起见,我删除了它们):

var addresses = from address in Database.Addresses.All()
select new Address()
{
MyNestedType = new NestedType()
{
Field1 = address.ADDR1
}
};

如果我执行此语句,我会收到错误从'System.String'到'NestedType'的无效转换。当我尝试枚举结果时。

我可能忽略了显而易见的事情,但我在任何地方都看不到我请求这样的转换。

Field1address.ADDR1 都是字符串。

知道我做错了什么吗?

编辑:

为了提供更多信息,我再次查看了这个问题,我使用 SimpleRepository 和 SQLite 数据库创建了一个完整的小示例来演示该问题。使用 SimpleRepository 我得到的错误是不同的(序列不包含任何元素)但结果是相同的。完整代码如下:

 public class DatabaseAddress
{
public int Id { get; set; }
public string Address1 { get; set; }
}

public class Address
{
public NestedType MyNestedType;
}

public class NestedType
{
public string Field1 { get; set; }
}

static class Program
{
[STAThread]
static void Main()
{
var repo = new SimpleRepository("Db", SimpleRepositoryOptions.RunMigrations);
DatabaseAddress address1 = new DatabaseAddress();
address1.Address1 = "Test";
repo.Add(address1);
var all = repo.All<DatabaseAddress>();
var addresses = from address in repo.All<DatabaseAddress>()
select new Address { MyNestedType = new NestedType { Field1 = address.Address1 } };
}
}

在此示例中,all 包含添加到数据库的对象,但 addresses 返回“Sequence 不包含任何元素”。

如果我在 select 语句中使用匿名类型而不是具体类型,它就可以工作。

我的知识显然有差距;任何帮助表示赞赏。

最佳答案

请看我的问答here .

以下是测试是否是同一个问题的方法:

在您发布的示例代码中,将 NestedType 中的 Field1 更改为 Address1。重新运行您的示例。如果有效,同样的问题和我在链接问题中回答的修复应该可以为您解决。

关于Linq 和 SubSonic - 返回嵌套的复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255193/

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