from a in table1 join b in table2 on a.tab1id equals b.tab1id where a.type= yourType and b.tab2id = yourTab2id select b.imagedata;
var result=from a in table1 join b in table2 on a.tab1id equals b.tab1id where a.type= yourType and b.tab2id = yourTab2id select b.imagedata;
我用 var类型来接收
where之后为什么会提示无法将string转换为隐式bool, and 跟 select都无效了。(Where之后整段都不行了),还请指教
此外我想用byte[]去接受data,在单个表的时候我是用Single返回序列中的唯一元素,但现在两个表不行了.
@时光刺客: 你的数据库定义的表tab1的字段是不是bool类型的,那么你要在linq之前,把 yourType这个参数转化成 bool类型。 也就是 bool yourType = true/false;然后把这个yourType传递给上面的linq。
@jone_e: 表的定义中没有用到bool类型,两个表都没有啊,type字段和参数都是string. imagedata字段是byte[],最后我where (a.type== yourType && b.tab2id == yourTab2id)select b.imagedata
加了括号和等号
可是结果得到的是IQueryable<byte[]>类型,赋值给byte[]变量,提示无法将IQueryable<byte[]>转换为byte[]
@时光刺客: 你先看看linq基础知识吧。。
这里如果得到的结果是多个记录,那么用foreach循环上面的linq,也就是:
foreach(var r in result)
{
r.imagedata//取到数据库的值。
}
从而得到结果。如果得到的数据你确定是一条记录的话,result.first().imagedata。 取得数据库的值。
这个和MVC无关,看你用的什么方式取数据。如果是Linq或者是EF,就如楼上的方式即可。
关键是sql语句。
在EF的edmx把两个表的关系建立好(1-1,1-多)等,然后生成的实体就会自动有关联的键,直接访问就可以拿到了(会自动生成join的SQL语句)。
使用js的时候可以在加载页面的时候执行某些程序,onload()函数可以
要用struts可以加一个监听器实现ServletContextListener接口,当项目启动的时候自动从数据库得到数据,可以将数据放入application中,当action提交到相应页面的时候便可以从application中取得数据,实现前台页面!
select imagedata from 表2 where tab2id=? and tab1id = (select tab1id from 表1 where type=?)