VS2008下遇到的LINQ子查询问题

yaotomo 2014-02-24 09:16:01
只是做个试验,看子查询怎么弄,其实这个功能不用子查询就能实现的
CatId 和docId 都是int类型的

var q = from t in db.tDocInfo where (from s in db.tCatInfo where s.CatId < 3 select s.CatId).Contains(t.docId) select t;

报错
LINQ to Entities 不识别方法“Boolean Contains[Int32](System.Linq.IQueryable`1[System.Int32], Int32)”,因此该方法无法转换为存储表达式。

网上查了一下可能是Framework3.5不能这么用,不知道怎么改才能在VS2008下实现in查询的功能呢?请各位前辈指教
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotomo 2014-02-25
  • 打赏
  • 举报
回复
谢谢6#大神,不报错了,可是没有任何查询结果啊。 按sql语句是可以查出结果的。。。 tDocInfo表里id<3的结果还是蛮多的
q107770540 2014-02-25
  • 打赏
  • 举报
回复
有简单粗暴的方法: var q = from t in db.tDocInfo.AsEnumerable() where (from s in db.tCatInfo.AsEnumerable() where s.CatId < 3 select s.CatId).Contains(t.docId) select t;
yaotomo 2014-02-25
  • 打赏
  • 举报
回复
to3#的朋友 这么写还是报原来的错,Linq有两种写法,这种是方法的写法,我写的是Linq语句的写法。Ef不支持子查询直接用Contains,所以才会报这个错。 to1#的朋友 Ef3.5里必须用拓展方法才能实现吗?有没有比较简单的方法?谢谢指点。
  • 打赏
  • 举报
回复
不怎么会linq 但是我觉得 .contains 应该是放在 .select 后面的吧 db.tDocInfo.Where(o => db.tCatInfo.Where(s => s.CatId < 3).Select(p => p.CatId ).Contains(o.docId)).ToList(); 不知道这样写可不可以
q107770540 2014-02-24
  • 打赏
  • 举报
回复
EF4以上版本,已经直接支持Contains 方法了
q107770540 2014-02-24
  • 打赏
  • 举报
回复
EF4以上版本,可以直接用 Any 方法来实现 EF3.5:

var q =  db.tDocInfo.WhereIn(t.docId,(from s in db.tCatInfo where s.CatId < 3 select s.CatId)) ; 


public static IQueryable<TEntity> WhereIn<TEntity, TValue>
  (
    this ObjectQuery<TEntity> query,
    Expression<Func<TEntity, TValue>> selector,
    IEnumerable<TValue> collection
  )
{
  if (selector == null) throw new ArgumentNullException("selector");
  if (collection == null) throw new ArgumentNullException("collection");
  if (!collection.Any()) 
    return query.Where(t => false);

  ParameterExpression p = selector.Parameters.Single();

  IEnumerable<Expression> equals = collection.Select(value =>
     (Expression)Expression.Equal(selector.Body,
          Expression.Constant(value, typeof(TValue))));

  Expression body = equals.Aggregate((accumulate, equal) =>
      Expression.Or(accumulate, equal));

  return query.Where(Expression.Lambda<Func<TEntity, bool>>(body, p));
}

//Optional - to allow static collection:
public static IQueryable<TEntity> WhereIn<TEntity, TValue>
  (
    this ObjectQuery<TEntity> query,
    Expression<Func<TEntity, TValue>> selector,
    params TValue[] collection
  )
{
  return WhereIn(query, selector, (IEnumerable<TValue>)collection);
}
这个是完整源码 python FastAPI实现 vue 深度学习 大模型 【深度学习毕业设计】基于BERT的电商商品评论情感分析系统(PyTorch+FastAPI+Vue3) 模型微调训练 深度学习毕业设计 python课程设计 完整版 源码+sql脚本+论文 完整版 数据库是mysql 随着电子商务规模持续扩大,商品评论已成为消费者决策与商家改进产品的重要依据。海量评论文本具有口语化、领域词汇密集、正负情感交织等特点,传统基于词典或浅层机器学习的情感分析方法难以充分刻画上下文语义,分类精度受到限制。针对上述问题,本文设计并实现了一套基于 BERT 的电商商品评论情感分析系统,完成从评论采集、模型推理、结果存储到可视化分析的闭环。 系统采用前后端分离架构。后端以 Python 语言和 FastAPI 框架构建 RESTful 接口,使用 SQLAlchemy 访问 MySQL 8 数据库 db_bert_sentiment,核心推理模块基于 PyTorch 与 Transformers 加载中文 BERT 微调模型 BertForSequenceClassification,对评论进行 1 至 5 星五分类,并映射为正面、中性、负面三类情感;当微调模型文件缺失时自动回退到电商情感词典规则引擎,保证系统可用性。前端采用 Vue3、Vite、Element Plus、Pinia 与 ECharts 实现管理端界面,支持单条实时分析、CSV 批量导入、评论维护、统计分析、模型管理、个人中心和操作日志等功能。 在数据库设计方面,系统围绕管理员、评论、分析任务、模型信息、情感关键词和操作日志六类实体建立概念模型,给出独立的实体属性图与实体间关系图,并以表格形式详细列出各表字段名称、类型、长度、是否为空及备注。测试表明,系统能够稳定完成登录鉴权、情感推理、批量任务与多维图表展示,B
内容概要:本文提出了一种基于角蜥蜴优化算法(Harris Hawks Optimization-inspired Lizard Search Algorithm, HLOA)优化BP神经网络的风电功率预测模型,旨在解决传统BP神经网络在风电功率预测中易陷入局部最优、收敛速度慢、预测精度不高等问题。通过HLOA算法对BP网络的初始权重和阈值进行全局优化,提升了模型的泛化能力与训练效率。研究在Matlab平台上完成算法实现,并采用真实风电场数据进行实验验证,结果表明,相较于标准BP及其他优化算法(如GA、PSO)优化的模型,HLOA-BP模型在均方根误差(RMSE)、平均绝对误差(MAE)等关键评价指标上表现更优,具有更强的预测稳定性和准确性。该方法为可再生能源领域的时间序列预测提供了有效的技术路径与实践参考。; 适合人群:具备机器学习、智能优化算法及电力系统基础知识的研究生、科研人员以及从事新能源预测、电力调度等相关工作的工程技术人员。; 使用场景及目标:①提升风电功率预测精度,支撑电网安全稳定运行与能源调度决策;②学习并掌握智能优化算法与神经网络融合建模的方法论;③开展基于Matlab的仿真实验、算法对比与性能评估;④拓展应用于光伏发电、负荷预测等其他非线性时间序列预测任务。; 阅读建议:建议结合提供的Matlab代码深入实践,重点理解HLOA算法的搜索机制及其对BP网络参数的优化过程,通过更换数据集、调整参数配置等方式进行消融实验与对比分析,全面掌握模型构建与调优技巧,进而将其迁移至实际工程项目中应用。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧