gpt4 book ai didi

asp.net - 在Linq中使用JOIN进行SQL ExecuteQuery问题

转载 作者:行者123 更新时间:2023-12-02 04:00:06 26 4
gpt4 key购买 nike

我已经在我的一个站点上使用Linq to SQL已有一段时间了,随着时间的流逝,我用来查询数据库的代码变得有些混乱,所以我决定重新编写,最初我的查询全部由Linq专门处理但是最近对高级搜索功能的需求使我更加倾向于使用ExecuteQuery和手写SQL语句,问题是我一生都无法使Join语句正常工作。

我的数据库中有两个表t_events和t_clients。这两个表之间唯一的相似之处在于它们都具有一个clientid字段(该事件所针对的客户端的ID)。我需要做的是将所有事件拉入页面(工作正常),但是我不想在页面上显示clientid,而需要显示客户端名称。最初,我有一个join子句可以很好地处理这个问题:

   var eve = from p in db.t_events
join c in db.Clients on p.clientid equals c.clientid
where p.datedue <= thisDay && p.status != "complete"
select new { p.eventname, p.datedue, p.details, p.eventid, p.status, c.clientname };

但是,随着页面的重新设计,我在重新创建linq在联接中所做的工作时遇到了问题。我当前的代码:
  StringBuilder sqlQuery = new StringBuilder("SELECT * FROM dbo.t_events JOIN dbo.t_clients ON dbo.t_events.clientid=dbo.t_clients.clientid");
var query = db.ExecuteQuery<t_events>(sqlQuery.ToString());
foreach (var c in query)
{
counter = counter + 1;
MyStringBuilder.Append("<tr class='"+c.status+"'><td><a href='searchdetails.aspx?id="+c.eventid+"'>"+c.eventname+"</a></td><td>" +c.clientname+ "</td></tr>");
}

在foreach循环中,您可以看到我正在尝试拉入c.clientname(不起作用),因为它不在t_events数据库上,将其更改为c.clientid可以使代码正常工作,我不确定是什么问题就像使用相同的SQL并直接从sql管理工具中运行查询一样,它就像一个魅力。在这个问题上的任何想法将不胜感激!

固定!

DaveMarkle建议使用 View ,到目前为止,这是一种更简单的方法。我创建了一个将两个表与所需字段连接在一起的 View ,并对其进行查询,既简单又有效,谢谢!

最佳答案

嗯-所以也许我们应该在这里找到答案,这样问题才能从“未答复”列表中删除。

正如戴夫·马克尔所说。

使用 View 。

关于asp.net - 在Linq中使用JOIN进行SQL ExecuteQuery问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com