GridView可以填充var吗?

时间:2012-10-25 08:59:40

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

我试图在GridView中显示excel表和sql server数据表之间的重复行。

这是我的代码:

var matched = (from table1 in dt4.AsEnumerable()
                join table2 in oltlb.AsEnumerable() on
                table1.Field<int>("ID") equals table2.Field<int>("ID")
                where table1.Field<string>("Data") == table2.Field<string>("Data")
                select table1);
DataTable dthi5 = new DataTable();
dthi5 = matched.CopyToDataTable();

我可以在GridView中显示var的值吗?

3 个答案:

答案 0 :(得分:1)

是的,它可以填充您的变量。 (在这种情况下,你必须把它.ToList()

您必须明白var是强类型的!它不像在php中那样可以切换变量的类型。

尝试写作

var x = null;
在Visual Studio中

。会有错误!

您的var 每次必须声明为类型安全。让程序员不必总是在变量前编写长类型名称只是一个简短的咒语。因此,您的var就是IEnumerable<T>

答案 1 :(得分:1)

试试这个

var matched = (from table1 in dt4.AsEnumerable()
                  join table2 in oltlb.AsEnumerable() on
                table1.Field<int>("ID") equals table2.Field<int>("ID")
                  where table1.Field<string>("Data") == table2.Field<string>("Data")
                  select table1);
      DataTable dthi5 = new DataTable();
      dthi5 = matched.CopyToDataTable();

myGridView.DataSource = dthi5;
myGridView.DataBind();

或者

myGridView = matched.ToList();
myGridView.DataBind();

答案 2 :(得分:0)

你绝对可以将var绑定到gridview。

我们假设有一个包含三个字段的员工表

  

emp_id emp_fname emp_lname

第一种方式:如果您将整个表或特定记录提供给var,那么列表将起作用...

一旦您建立了与sql server的成功连接,

employees就是一个数据上下文类。

var result = from alias in dc.employees
          where alias.emp_id == id --(this is the passed parameter)

您也可以手动指定ID,例如:

where alias.emp_id == 5
          select alias;

将选择id = 5的整个员工记录。

您现在可以将其绑定到gridview

gridview1.datasource = result.tolist();
gridview1.databind();

如果你给整张桌子,那么也可以使用tolist

var result  = from alias in dc.employess
              select alias;

gridview1.datasource = result.tolist();
gridview1.databind();

如果您选择多个列,那么tolist将无效。你需要返回对象。

该方法已在class1中定义。

public static object returnquery()
{

dcdatacontext dc = new dcdatacontext();

var result = from alias in dc.employees
             where alias.emp_id == 5
             select new
             {
                alias.emp_fname,
                alais.emp_lname
             };

 return result;
}

你需要抓住这个对象。

object obj = new class1.returnquery();

gridview1.datasource = obj;
gridview1.databind();

或者您可以尝试一下,看看它是否有效。我实际上没有尝试过这个。

var result = from alias in dc.employees
             where alias.emp_id == 5
             select new
             {
                alias.emp_fname,
                alias.emp_lname
             };

gridview1.datasource= result.object();
gridview1.databind();