2013-12-20 40 views
0

我已經能夠使用linq從表中獲取值。使用字符串代替屬性名稱(LINQ)

var q=(from app in context.Applicant 
     where app.ApplicantName=="") 

現在,我想是這樣的:

var q=(from app in context.Applicant 
     where app.stringIhave =="") // so instead of column name I have string which has same name as column. 

是否有可能選擇以指定字符串,因爲這是不知道我會在每種情況下得到的,我需要不同的數據所有的時間。

是否可以這樣做? 如果不是,那麼我會弄清楚別的。 更新 我有一個GlobalString,它擁有一個表的列名。 所以,當我查詢該表,我只能從字符串指定列的值我想:

var q=(from app in context.Applicants 
     where app.ID==1013 
     select GlobalString //which is specifying that I want to get value from which column, as column name is not fixed. 
//where GlobalString can have values like: app.FirstName..app.LastName etc 

UPDATE1:

var q = context.Applicants.Select("new(it.ApplicantFirstName as FirstName, it.ApplicantLastName as LastName)"); 

錯誤消息:

The query syntax is not valid. Near keyword 'AS' 

回答

2

你可以使用Dynamic Linq(可從NuGet獲得):

var q = context.Applicant.Where(app.stringIhave + " = @0", ""); 
+0

我想你需要補充的是'app'你的樣品中不一樣的是'應用'在OP – Grundy

+0

請參閱我的編輯,因爲我在你的幫助後前進一步。 –

+0

@ItiTyagi是的,你可以將字符串傳遞給'Select' – Grundy

0

的選擇,你可以嘗試這樣的事情

var q = context.Applicant.Select("new(it.FirstName as FirstName, it.LastName as LastName)"); 

所以你只需要構建字符串爲該格式

+0

不,它給我一個錯誤,不支持查詢格式。 –

+0

@ItiTyagi,你可以提供錯誤信息和示例代碼你試過了嗎?此外,它'樣品工作'動態Linq'只有 – Grundy

+0

好的等待,我正在更新。 –

相關問題