Linq to sql 如何在linq中围绕每条记录旋转并在视图中显示

Linq to sql 如何在linq中围绕每条记录旋转并在视图中显示,linq-to-sql,asp.net-mvc-2,iqueryable,Linq To Sql,Asp.net Mvc 2,Iqueryable,我的数据库中有四个表,我想加入其中并返回记录,并将其显示到searchController中 我的问题是: public IQueryable PerformSearch(string query) { if (!string.IsNullOrEmpty(query)) { var results = from tbl1 in context.Table1 join tbl2 in context.Table2 on t

我的数据库中有四个表,我想加入其中并返回记录,并将其显示到searchController中

我的问题是:

public IQueryable PerformSearch(string query)
{
    if (!string.IsNullOrEmpty(query))
    {
        var results = from tbl1 in context.Table1
                      join tbl2 in context.Table2 on tbl1.Id equals tbl2.Id
                      join tbl3 in context.Table3 on tbl2.Id equals tbl3.Id
                      join tbl4 in context.Table4 on tbl3.Id equals tbl4.Id
                      where tbl1.col2.Contains(query)
                      orderby tbl1.Count descending
                      select new
                      {
                          col1 = tbl1.Col1,
                          col1 = tbl1.Col1,
                          col1 = tbl1.Col1,
                                  .
                                  .
                                  .
                      };
        return results.AsQueryable();
    }
    else return null;
}
此方法在SearchController中调用,如下所示:

public class SearchController : System.Web.Mvc.Controller
{
    public System.Web.Mvc.ActionResult Search(System.String query)
    {
        var search = new Search();
        ViewData["result"] = search.PerformSearch(query);
        return View("Search");
    }
}
我不知道如何在PeformSeach方法返回的每个记录(加上与intellisense功能)周围旋转,并在视图中显示它!这也是一个好办法吗


提前感谢

我建议为此使用强类型视图

首先,从PerformSearch而不是IQueryable返回模型对象。将此模型对象设置为您的视图

一旦您的视图知道它需要显示什么样的数据,您就可以使用intellisense了

public class Record
{
    public int Col1 { get; set; }
    public string Col2 { get; set; }
    ...
}

public IList<Record> PerformSearch(string query)
{
    var records = new List<Record>();

    if (!string.IsNullOrEmpty(query))
    {
        return (from tbl1 in context.Table1
                join tbl2 in context.Table2 on tbl1.Id equals tbl2.Id
                join tbl3 in context.Table3 on tbl2.Id equals tbl3.Id
                join tbl4 in context.Table4 on tbl3.Id equals tbl4.Id
                where tbl1.col2.Contains(query)
                orderby tbl1.Count descending
                select new Record
                {
                    col1 = tbl1.Col1,
                    col1 = tbl1.Col1,
                    col1 = tbl1.Col1
                }).ToList();
    }

    return records;
}

//ActionMethod
public System.Web.Mvc.ActionResult Search(System.String query)
{
    var search = new Search();
    var model = search.PerformSearch(query);
    return View(model);
}

//View
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Collections.IList<Record>>" %>

<% foreach (var record in Model) { %>
    <%= Html.Encode(record.Col1) %> --this will now give you intellisense
<% } %>
公共类记录
{
公共int Col1{get;set;}
公共字符串Col2{get;set;}
...
}
公共IList性能搜索(字符串查询)
{
var记录=新列表();
如果(!string.IsNullOrEmpty(查询))
{
返回(来自context.Table1中的tbl1
在tbl1.Id等于tbl2.Id的context.Table2中加入tbl2
在tbl2.Id等于tbl3.Id的context.Table3中加入tbl3
在tbl3.Id上的context.Table4中加入tbl4等于tbl4.Id
其中tbl1.col2.Contains(查询)
orderby tbl1。计数递减
选择新记录
{
col1=tbl1.col1,
col1=tbl1.col1,
col1=tbl1.col1
}).ToList();
}
退货记录;
}
//行动方法
public System.Web.Mvc.ActionResult搜索(System.String查询)
{
var search=新搜索();
var模型=search.PerformSearch(查询);
返回视图(模型);
}
//看法
--这将给你智能感知