1

这样的事情可能吗?我收到以下错误。

    db.SomeTable.Add(new SomeTable()
    {
        GuidId = Guid.NewGuid(),
        Name = db.AnotherTable.Select(x => x.Name.Where(x.Id == localVariable.Id))
    }

  );
    db.SaveChanges();

系统数据实体 DbSet 的未知 Select(?)

4

2 回答 2

2

Select返回一个IEnumerable,而不是单个记录。您需要添加一个.First()调用来获取一条记录。实体框架认为您正在尝试将列表放入单个字段中。

此外,您的使用Where()不正确。Where也返回一个IEnumerable, 并且只能应用于一个IEnumerable. 将其视为过滤列表的一种方式。

以下是我认为您要求的方法:

Name = db.AnotherTable.First(x => x.id == someId).Name
于 2013-11-15T00:51:37.033 回答
1

我想你想要的是这样的:

Name = db.AnotherTable
    .First(x => x.Id == localVariable.Id)
    .Name;

其步骤是:

  1. 进入项目列表AnotherTable
  2. 找到该项目的第一个项目Id等于localVariable.Id
  3. 将您的变量设置为Name您找到的项目的属性

您也可以使用FirstOrDefault()Single()SingleOrDefault()

于 2013-11-15T01:22:16.450 回答