【问题标题】:Make innerjoin in linq to sql(Compiled query)在 linq to sql 中进行内部连接(编译查询)
【发布时间】:2013-12-20 05:52:45
【问题描述】:

我用于编译查询的 .cs 代码是

public static Func<DataClassesDataContext, int, IQueryable<editor_j_inf>>
editordetail1 = CompiledQuery.Compile((DataClassesDataContext db, int a) =>
             from p1 in db.editor_j_infs
             where p1.ed_journal_id == a
             orderby p1.editor_id descending
             select p1);   //Its my precompile process

如果我想在此编译器查询中的 2 个表之间进行内部连接,我该怎么办

说 1 个表名是 editor_j_inf,另一个是 editor_j_inf1。如何在这 2 个表之间进行内部连接

我试过放

 public static Func<DataClassesDataContext, string, int, int, IQueryable<A>>
  getjournal2 = CompiledQuery.Compile((DataClassesDataContext db, string a, int b, int c) =>
         from p in db.editor_j_infs
         join p1 in db.editor_regs on p.editor_id equals p1.editor_id
         where p.j_email == a && p1.confirm1 == b && p1.denied == c
         orderby p.ed_journal_id descending
         select new A{Title= p.j_title,EditorId= p.editor_id,EditorId1=p.ed_journal_id });


Public class A
{ 
    public string Title {get;set;} 
    public int EditorId {get;set;}
    public int EditorId1 { get; set;} 
}
 public void getjournals()
{
    string email="abc@gmail.com";    
    var rr1 = getjournal2(db, email,1,0).ToList();

    var rrlist = rr1.ToList();

    if (rrlist.Count() != 0)
    {
        DataList1.DataSource = rr1;
        DataList1.DataBind();
    }
}

现在如何使用 datalist 进行绑定?

【问题讨论】:

  • 您的返回类型是IQueryable&lt;editor_j_inf&gt;,但您的查询选择了p.j_title,我假设它是String。也许这是个问题?
  • 我想你是对的,因为我以前只写select p;而不是选择新的 { p.j_title };它运作良好。那我该怎么办?
  • 如果我想同时选择 p,p1 ,即选择 p,p1;除了我该做什么?

标签: c# asp.net sql linq-to-sql


【解决方案1】:

您需要使返回类型和实际返回对应。如果您需要string,请制作Func&lt;DataClassesDataContext, int, IQueryable&lt;string&gt;&gt;

并用

完成查询

select new {p.j_title} 甚至select p.j_title。如果您需要editor_j_inf,则保留函数声明并使用select p 完成查询

【讨论】:

  • 如果我想同时选择 p,p1 ,即选择 p,p1;除了我该做什么?
  • 如果你想合并 p 和 p1 的结果,你需要创建一些中间类,其中包含你需要的 p 和 p1 的字段,使其成为返回类型并在 select 语句中创建它。示例:class A { public string Title {get;set;} public int EditorId {get;set;} 然后是 Func&lt;DataClassesDataContext, int, IQueryable&lt;A&gt;&gt;select new A { Title = p.j_title, EditorId = p1.editor_id }。像这样。
  • 公开课程:public class A...
  • 这就是我们正在做的事情,但我们将有课程,而不是表格。尝试公开您的课程。
【解决方案2】:

试试这个:-

from p1 in db.editor_j_inf
join p2 in db.editor_j_inf1
on new { p1.ed_journal_id , p1.column2}
equals new { p2.ed_journal_id , p2.column2}
select p1.column1 + " " + p1.column2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多