2012-09-14 2 views

ответ

2

вы пробовали res.Field<string>(colName)?

public IEnumerable MySelect(string colName, string param) 
{ 
    using (MyEntities db = new MyEntities()) 
    { 
    var query = from res in db.MyTable.AsEnumerable() 
    where res.Field<string>(colName).Contains(param) 
    select res; 
    return query; 
    } 
} 

Here - пример.

PS: Я не скомпилировал код, поэтому может возникнуть ошибка.

+1

Это о _Generic поле и SetField методы (LINQ к DataSet) _, но я использую linq для сущности и ошибки компилятора в «res.Field (colName)», что «MyTable не содержит определения для поля и никакого метода расширения. Поле, принимающее первый аргумент типа DAL.MyTable, можно найти». – ku1gun

+0

Я отредактировал ответ, так что если вы можете попробовать сейчас? Я заменил 'db.MyTable' на' db.MyTable.AsEnumerable() ' – Junaid

+0

К сожалению, та же ошибка:« DAL.MyTable »не содержит определения для« Поле »и никакого метода расширения« Поле », принимающего первый аргумент тип «DAL.MyTable» может быть найден (вам не хватает директивы using или ссылки на сборку?) – ku1gun

0

использование Expression(Of Func(Of TableName, Boolean)) в качестве входного параметра для вашего метода

Public Function SelectFirstOrDefault(ByVal filterExpr As Expression(Of Func(Of T, Boolean))) As T 
    Return _dbContext.Set(Of T).FirstOrDefault(filterExpr) 
End Function 

, то вы можете назвать это, как показано ниже:

Public Function Select() As MyTypeInfo 
    dim expr = New Expression(Of Func(Of TableNameClass, Object))() {Function(x) x.Code, Function(x) x.LastModifiedDate, Function(x) x.Title} 
    SelectFirstOrDefault(expr) 
End Function 
Смежные вопросы