请教LINQ的动态写法

GZ_kenny 2011-06-13 05:41:25
var query=from b in db.Book select b;
我想问一下,查询的表能不能动态啊?就是 db.Book 能不能动态啊?要如何动态啊?
...全文
120 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-06-13
  • 打赏
  • 举报
回复
WCF RIA Service和一般的Linq2EF不一样。

你可以debug下Query的过程,它Load是用uri方式。有点像 DataService。

自己拼Uri字符串
GZ_kenny 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fangxinggood 的回复:]
有点问题,改为List<object>


C# code
public List<object> Query(string @namespace, string table, string where)
{
using (var ctx = new VisualRMIDBEntities())
{
var type = typeof(VisualR……
[/Quote]

大大,silverlight的ria没有ExecuteStoreQuery这个方法啊
机器人 2011-06-13
  • 打赏
  • 举报
回复
有点问题,改为List<object>

public List<object> Query(string @namespace, string table, string where)
{
using (var ctx = new VisualRMIDBEntities())
{
var type = typeof(VisualRMIDBEntities);
var elementType = Type.GetType(string.Format("{0}.{1}", @namespace, table));
var mi = type.GetMethod("ExecuteStoreQuery", new Type[] { typeof(string), typeof(object[])});
mi = mi.MakeGenericMethod(elementType);
var sql = string.Format("select * from {0} where {1}", table, where).Trim();
if (sql.EndsWith("where"))
sql = sql.Replace("where", "");
var result = mi.Invoke(ctx, new object[] { sql, null }) as IEnumerable<object>;
return result.ToList();
}
}
机器人 2011-06-13
  • 打赏
  • 举报
回复
public IEnumerable<object> Query(string @namespace, string table, string where)
{
using (var ctx = new XXXEntities())
{
var type = typeof(XXXEntities);
var elementType = Type.GetType(string.Format("{0}.{1}", @namespace, table));
var mi = type.GetMethod("ExecuteStoreQuery", new Type[] { typeof(string), typeof(object[])});
mi = mi.MakeGenericMethod(elementType);
var sql = string.Format("select * from {0} where {1}", table, where).Trim();
if (sql.EndsWith("where"))
sql = sql.Replace("where", "");
return mi.Invoke(ctx, new object[] { sql, null }) as IEnumerable<object>;
}
}

调用:

var result = Query("XXX.DB", "Student", null);
foreach (var r in result)
{
var s = r as Student;
。。。
}

GZ_kenny 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
引用 3 楼 gz_kenny 的回复:

就是想问问db.后面能不能动态

使用 C# 反射 来实现
[/Quote]

能给个例子吗?
GZ_kenny 2011-06-13
  • 打赏
  • 举报
回复
不是条件动态,是查询哪个表动态
opopopo_1 2011-06-13
  • 打赏
  • 举报
回复

if (Request.Form["ip_name"] == null)
{
var model = from m in imdb.tb_Movie
orderby m.ID_Movie descending
select m;
return View(model);
}
else
{

var queryBuilder = QueryBuilder.Create<tb_Movie>()
.Like(c => c.Name_CN, Request.Form["ip_name"].Trim())
.OrLike(c => c.Name_EN, Request.Form["ip_name"].Trim())
.OrLike(c => c.Url_IMDB, Request.Form["ip_name"].Trim())
.Like(c => c.Year_Movie, Request.Form["ip_year"].Trim())
.Like(c => c.Path_Save, Request.Form["ip_Path_Save"].Trim())
.Like(c => c.Type_Movie, ip_type);
var query = imdb.tb_Movie.Where(queryBuilder.Expression);
return View(query.OrderByDescending(movie => movie.ID_Movie));

}
opopopo_1 2011-06-13
  • 打赏
  • 举报
回复
可以的
q107770540 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gz_kenny 的回复:]

就是想问问db.后面能不能动态
[/Quote]
使用 C# 反射 来实现
opopopo_1 2011-06-13
  • 打赏
  • 举报
回复
你的意思是加条件是吧? where 1=1
这种?
GZ_kenny 2011-06-13
  • 打赏
  • 举报
回复
就是想问问db.后面能不能动态
garfieldzf 2011-06-13
  • 打赏
  • 举报
回复
你想怎么个动态法?
xuexiaodong2009 2011-06-13
  • 打赏
  • 举报
回复
没办法动态

110,534

社区成员

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

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

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