2013-11-01 39 views
-1

我从Web Api获取数据并将其添加到我的Windows应用商店中的应用程序与c#的列表中。我使用下面的代码工作正常。排除某些项目被添加到C#列表#

HttpClient client = new HttpClient(); 
    HttpResponseMessage response = await client.GetAsync("http://localhost:12345/api/items"); 

var info = new List<SampleDataGroup>(); 


      if (response.IsSuccessStatusCode) 
      { 
       var content = await response.Content.ReadAsStringAsync(); 

       var item = JsonConvert.DeserializeObject<dynamic>(content); 


       foreach (var data in item) 
       { 
         var infoSect = new info 
          (

           (string)data.Id.ToString(), 
           (string)data.Name, 
           (string)"", 
           (string)data.PhotoUrl, 
           (string)data.Description 

          ); 
           info.Add(infoSect); 
       } 
      } 
      else 
      { 
       MessageDialog dlg = new MessageDialog("Error"); 
       await dlg.ShowAsync(); 
      } 


      this.DefaultViewModel["Sections"] = info; 

如何查看从Web API检索的数据,从它的Name包含在它的单词“测试”列表中排除项目。例如,包含Name“苏打水测试”的物品不应包含在清单中。

因此,如果名称包含“测试”,请不要添加到列表中。

+3

您是否在将它添加到列表之前尝试过使用IF语句? – Amicable

+1

你的最后一行基本上回答你的问题 –

回答

0

试试这个:

if(!data.Name.ToString().Contains("Test")) 
{ 
//Add Item to List 
} 
+0

谢谢你的工作很好 – Tester

+0

你是欢迎:)我很高兴帮助你。 –

1
var item = JsonConvert.DeserializeObject<dynamic>(content).Where(i=>!i.Name.Contains("Test")) 
2
var items = item.Where(d =>!d.Name.Contains("Test")).ToList(); 
items.ForEach(i => info.Add(new info(){ 
    data.Id.ToString(), 
    ... 

}));  
2

你应该能够做到这一点使用LINQ。

info.AddRange(item.Where(i => !i.Name.Contains("Test")) 
        .Select(i => { 
        new info 
         (

          (string)data.Id.ToString(), 
          (string)data.Name, 
          (string)"", 
          (string)data.PhotoUrl, 
          (string)data.Description 

         )})); 
+0

要求提供“Contains”测试的问题并选择上面未填充的信息列表... –

+0

现在看起来不错:) –