У меня есть объект IQueryable, и я должен взять данные в IQueryable для помещения его в средства управления Textboxs. Действительно ли это возможно?
Я пробую что-то как:
public void setdata (IQueryable mydata)
{
textbox1.text = mydata.????
}
Я делаю это:
public IQueryable getData(String tableName, Hashtable myparams)
{
decimal id = 0;
if (myparams.ContainsKey("id") == true)
id = (decimal)myparams["id"];
Type myType= Type.GetType("ORM_Linq." + tableName + ", ORM_Linq");
return this.GetTable(tableName , "select * from Articu where id_tipo_p = '" + id + "'");
}
public IQueryable<T> GetTable<T>(System.Linq.Expressions.Expression<Func<T, bool>> predicate) where T : class
{
return _datacontext.GetTable<T>().Where(predicate);
}
Это возвращает a {System.Data.Linq.SqlClient.SqlProvider+OneTimeEnumerable
1 [ORM_Linq. Articu]}'
Я не вижу, что любой метод как Вы говорит мне. Я вижу Бросок <>, Выражение, ToString...
Отредактируемое: Обновлено на основе дополнительной информации с других сообщений ...
Ваш метод GetData
возвращает iQueryable вместо категорически напечатанного результата, который почему ты в конечном итоге бросил его. Попробуйте изменить его на:
public IQueryable<ORM_Linq.Articu> getData(...)
Вы пытаетесь запросить «Articu» из разных таблиц?
с вышеуказанным изменением на месте, ваш код можно переписать следующим образом:
ORM_Linq.Articu result = mydata.SingleOrDefault();
if (result != null)
{
TextBoxCode.Text = result.id.ToString();
TextBoxName.Text = result.descrip;
}
var result = mydata.SingleOrDefault();
if (result != null)
{
textbox1.text = result.ProductName; // use the column name
}
else
{
// do something
}
Если у вас есть несколько результатов, то зацикливается над ними:
foreach (var item in mydata)
{
string name = item.ProductName;
int id = item.ProductId;
// etc..
}
Если вы ожидаете только одно значение, просто позвоните методом firstordefault ()
.
public void setdata (IQueryable mydata)
{
textbox1.text = mydata.FirstOrDefault().PropertyName;
}
Во-первых, вы должны использовать сильно типизированную версию IQueryable
. Скажем, что ваши объекты имеют тип MyObject
и что MyObject
имеет свойство с именем Name
типа string
. Затем, сначала измените параметр mydata
на тип IQueryable
:
public void setdata (IQueryable<MyObject> mydata)
Затем мы можем записать подобное тело, чтобы на самом деле получить из него некоторые данные. Допустим, нам нужен только первый результат запроса:
public void setdata (IQueryable<MyObject> mydata) {
MyObject first = mydata.FirstOrDefault();
if(first != null) {
textbox1.Text = first.Name;
}
}
Или, если вы хотите соединить все имена:
public void setdata(IQueryable<MyObject> mydata) {
string text = String.Join(", ", mydata.Select(x => x.Name).ToArray());
textbo1.Text = text;
}
Ну, как следует из названия, объект, реализующий IQueryable... Заинтересованный! Вам нужно будет написать запрос на linq, чтобы получить информацию о внутренних деталях вашего объекта IQueryable. В запросе на linq вы сможете вытащить его данные и назначить биты, где бы вы ни захотели - например, в текстовом поле.
Вот отличное место для начала изучения Linq.