Я новичок в С# Я пытаюсь использовать приложение службы wcf, которое ссылается на модель объекта данных, чтобы выбрать строку из таблицы. Поиск, поэтому я нашел способ вернуть результаты запроса linq в виде списка, хотя у меня нет нашел способ еще использовать список в моей странице веб-форм aspx. Я не знаю, как загрузить список на странице aspx, и до сих пор мои исследования в msdn мне не помогли. Я пытался выразить свою проблему наилучшим образом, чтобы вы поняли, вот мой код:
код приложения службы wcf:
public List<string> getAccountInfo(int uid)
{
List<string> result = new List<string>();
try
{
using (paragon_db_Models.user_accounts_Model context = new paragon_db_Models.user_accounts_Model())
{
var query = from uacc in context.user_accounts
where uacc.user_account_id == uid
select uacc;
foreach (var c in query)
{
string row = c.user_account_id + ";" + c.order_id + ";" + c.order_state + ";" + c.estimated_cost + ";" + c.instance_form + ";" + c.time_scedule + ";" + c.invoice + ";" + c.notification + ";" + c.user_account_type + ";" + c.username + ";" + c.password;
result.Add(row);
}
}
return result;
}
catch (Exception)
{
return result;
}
}
код aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
accountInfo_Ref.IaccountInfoSrvcClient accInfoClient = new accountInfo_Ref.IaccountInfoSrvcClient();
int id = (int)Session["UserId"];
List<string> columns = new List<string>(accInfoClient.getAccountInfo(id));
id_lbl.Text = columns[0];
order_id_lbl.Text = columns[1];
}
Сервис отлично работает. Я также открыт для предложений по улучшению способов сделать это.
Или вы не можете вернуть строки из своего сервиса, вы можете вернуть список объектов.
Если вы ДОЛЖНЫ возвращать строки, вы должны разделить сериализованные данные с помощью метода String.Split, но это действительно плохой метод. Если вы ДОЛЖНЫ возвращать строки, вы могли бы хотя бы использовать лучшую стратегию сериализации, такую как JSON или XML.
Но действительно подумайте об изменении своего сервисного интерфейса.
Теперь вернемся к использованию результатов:
Код:
protected void Page_Load(object sender, EventArgs e)
{
accountInfo_Ref.IaccountInfoSrvcClient accInfoClient = new accountInfo_Ref.IaccountInfoSrvcClient();
int id = (int)Session["UserId"];
List<string> rows = new List<string>(accInfoClient.getAccountInfo(id));
// display the first row
string row = rows.FirstOrDefault();
if (String.IsNullOrEmpty(row))
{
// record cannot be found
}
else
{
string[] details = row.Split(';');
id_lbl.Text = details[0];
order_id_lbl.Text = details[1];
}
}
метод возвращает List<string>
Вам просто нужно сохранить его в экземпляре List<string>
. Вы должны сделать вот так:
List<string> columns = accInfoClient.getAccountInfo(id);
он возвращает массив, как вы сказали в комментариях:
string[] columns = accInfoClient.getAccountInfo(id);
или использовать переменную implict:
var columns = accInfoClient.getAccountInfo(id);
Если я правильно понял ваш вопрос, просто напишите так
List<string> columns = accInfoClient.getAccountInfo(id).ToList<string>();
Вы получите список, заполненный данными.