无法在Linq中定义子查询

时间:2017-06-14 18:48:28

标签: c# sql linq

我想知道如何在LINQ中定义相关子查询以访问我的数据库中的两个表。

我打算做的是在LINQ中创建以下查询

select * from Value
where CyberEntityID IN (select CyberEntityID from CyberEntity where 
                        datetimevalue >= '2017-05-04 17:11:32.960' and 
                        datetimevalue <= '2017-05-04 17:11:33.035')

在我的代码中,我有以下查询

var query = dc.Values.Where(h => h.CyberEntityID == dc.CyberEntities
                                 .Where(d => d.datetimevalue >= sd && d.datetimevalue <= ed)
                                 .Select(d => d.CyberEntityID)).ToList();

但是我收到错误

  

operator ==不能应用于int和IQueryable类型

我做错了什么?

1 个答案:

答案 0 :(得分:1)

Where方法返回的IQueryable CyberEntityID无法与h.CyberEntityID进行比较,因此您需要Select之后.Select(d => d.CyberEntityID).FirstOrDefault() 返回序列第一个元素:

.Where(h => dc.CyberEntities.Where(d => d.datetimevalue >= sd && d.datetimevalue <= ed)
                            .Select(d => d.CyberEntityID).Contains(h.CyberEntityID))

或使用FirsOrDefault方法:

<div>
  <md-input-container>
    <label>Balance</label>
    <input ng-model="balance" type="number" required>
  </md-input-container>
  <div style="color:red">{{error}}</div>
  <md-button ng-click="answer()>Save</md-button>
</div>