2012-10-25 68 views
-1

我想顯示一個Excel表和一個GridView中的數據表中的sql server數據表之間的重複行。GridView可以填充var嗎?

這是我的代碼:

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值?

+0

嘗試將其轉換爲.ToList(); –

+0

請你指定我需要添加.ToList()嗎?我是一名初學者。 – Arbaaz

+0

嘗試綁定'dth15'到GridView – codingbiz

回答

1

是的,它可以填充您的變量。 (在這種情況下,你必須投它.ToList()

你必須明白,var是強類型!它不像在PHP中,您可以在其中切換變量的類型。

嘗試在Visual Studio編寫

var x = null; 

。會有錯誤!

您的var每次必須聲明類型安全。這只是一個簡短的拼寫,可以使程序員不必在變量前寫出長類型名稱。所以你的var在你的情況下是IEnumerable<T>

+0

對不起,我是一個完整的新手,你能解釋我應該在哪裏添加或替換上面的代碼? – Arbaaz

+0

只需添加.ToList() - ... select table1).ToList(); –

+0

System.InvalidCastException:指定的轉換無效。 我加了.ToList();如你所說,然後GridView1.DataSource =匹配; – Arbaaz

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(); 
+0

不用運氣!!! – Arbaaz

+0

你是什麼意思沒有運氣 - 有什麼錯誤? – codingbiz

0

你絕對可以綁定增值經銷商的GridView。

假設有三個字段

EMP_ID emp_fname emp_lname的

第一種方式僱員表:如果你給整個表或特定的記錄變量,然後向列表將工作.. 。

員工是一個數據上下文類,一旦你已經建立到SQL Server連接成功..

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();