2013-03-01 133 views
-3

我在写一个ASP.NET MVC 3应用程序。 我写的与实体框架和LINQ ,但我对LINQ声明将sql语句转换为linq;

  1. ,如果你有一个问题:

    select a, (select d from tabled where id = '12 ') as c from tableA inner join TableB on tablea.id = tableb.id 
    

    那么如何(使用控制器切换到LINQ和与ViewBag分配。海峡= ...) (如何能在视图中,可以显示和c)

  2. ,如果他的说法是,例如:Product product = db.Product.Find (id) 那么你怎么了确定产品是否为空?

回答

0
VAR

A =由在表A p加入中的q tableB的上p.id等于q.id选择新的{P.A,从r在提交其中r.id == 12选择r.d} .ToList();

这是该语句的LINQ查询。此外

可以使用

Product product = db.Product.Find (id); 
if (product == null) return "Emplty"; 
+0

这是你的工作...请让它作为答案,如果它可以帮助你。 – 2013-03-01 05:02:04

+0

谢谢 ,如果我将它传递给1 ViewBag.str =从表p中的p连接q等于q.id选择新的{pa,从r print tabled其中r.id == 12 select rd} 。 ToList(); 如何分隔每个字段(pa,rd)是从这个ViewBag.str! – 2013-03-01 07:17:44

+0

不可以添加查看包而不是你可以通过返回视图(ans)返回这个查询结果;那么u cn很容易把视图内的属性 – 2013-03-01 07:19:22

0

你必须弗洛以下步骤; 1)在模型中作为创建的返回值类:

public class ClassResult 
{ 
    public int a1 { get; set; } 
    public int b1 { get; set; } 
} 

则控制器

编写查询如下上:

public ActionResult Index() 
    { 
     List<TableAClass> ListA = new List<TableAClass>(); 
     List<TableBClass> ListB = new List<TableBClass>(); 
     List<TableCClass> ListC = new List<TableCClass>(); 

     List<ClassResult> res = new List<ClassResult>(); 

     res = (from p1 in ListA join p2 in ListB on p1.a1 equals p2.b1 select new ClassResult { a1=p1.a1 ,b1=p2.b1 }).ToList(); 

     return View(res); 
    } 

3)上的视图,

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.ClassResult>" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Index1</title> 
</head> 
<body> 
    <fieldset> 
     <legend>Fields</legend> 

     <div class="display-label">a1</div> 
     <div class="display-field"><%: Model.a1 %></div> 

     <div class="display-label">b1</div> 
     <div class="display-field"><%: Model.b1 %></div> 

    </fieldset> 


</body> 
</html>