将从Web服务引用检索的数据存储为数组/ arraylist

时间:2011-07-15 04:12:49

标签: c# arrays wcf silverlight

我现在正在做一个silverlight应用程序,语言是C#,我已成功从Web服务引用中检索数据,并且能够在网格视图中的mainpage.xaml上显示它。但是,有什么方法可以将我的数据存储为数组/ arraylist,这样我就不希望它只显示一列数据,而不是在网格视图中显示所有列数据。有谁可以帮我解决这个问题?以下是我目前的基本代码

  [OperationContract]
  public List<location> Getlocations()
  {
     DataClassesDBDataContext db = new DataClassesDBDataContext();

     var mlocations = from location in db.locations
                      select location;
     return mlocations.ToList();
  }

2 个答案:

答案 0 :(得分:1)

如果您使用的是wcf服务,则可以更改返回类型。

在添加服务参考中,单击&#34;高级&#34;底部的按钮。 将打开一个新的模式对话框&#34;服务参考设置&#34;在那里你可以选择&#34;收集类型&#34;作为Arraylist / Array / List。

现在每当您从Web方法返回List时,您将收到您在&#34; Collection Type&#34;中选择的那个。(这仅在wcf Web服务(.svc)中可用而不是(.asmx)

如果这不是一个选项,那么您只需将列表更改为数组。

var list = new List<string>{"1","2"}
string[] arrayVal =" list.ToArray();

由于问题不是很明确,并且您说您只想在网格中显示一列,您只需返回一个列数据,同时从Web方法返回,如

 [OperationContract]
 public List<location> Getlocations()
 {
   var db = new DataClassesDBDataContext();

   var mlocations = (from x in db.locations
                    select new location
                    {
                       locationColName = x.something
                    }).ToList();
   return mlocations;
 }

答案 1 :(得分:0)

列表中使用的ToArray()方法应该可以解决问题。这里显示了一个简单的一般示例:

List<string> l = new List<string>();
l.Add("somedata");
. . .
string[] s = l.ToArray();