将IEnumerable与IsolatedStorage中的数据进行比较

时间:2013-06-25 13:31:35

标签: c# winforms xaml windows-phone-8 windows-phone

如何将IEnumerable的数据与IsolatedStorage中的数据进行比较。 这是我的代码:

        var  data1 = from query in document.Descendants("Services")
        select new Ser 
        {
            name = query.Element("Name") !=  null
            ? query.Element("Name").Value
            : string.Empty,
        };
        ReportList.ItemsSource = data1;
        // ...
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            try
            {        
                string IsoKey = (((sender as MenuItem).DataContext) as Ser).name;
                _isoSettings.Add(IsoKey, IsoKey);
                _isoSettings.Save();
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Эта служба уже в исключениях");
            }
        }

XAML:

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
            <StackPanel>
                <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu>
                        <toolkit:MenuItem Header="Ignore" Click="MenuItem_Click"  />
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>

                <TextBlock Text="{Binding name}" Foreground="Coral" />

 foreach (string keyCollect in keysCollect)
        {
            returtStr += keyCollect;
        }

我想将data1与returtStr进行比较。并且不要在ListBox中显示相同的数据。 像这样:

var comparedata = data1.Except(returtStr);

但我有一个错误:

  

错误2'System.Collections.Generic.IEnumerable'   不包含'Except'的定义和最佳扩展名   方法过载   “System.Linq.Queryable.Except(System.Linq.IQueryable,   System.Collections.Generic.IEnumerable)'有一些无效   参数C:\ Users \ gromov \ SkyDrive \ Server Monitor \ Server   Monitor \ MainPage.xaml.cs 143 29服务器监视器

  

错误1实例参数:无法转换   'System.Collections.Generic.IEnumerable'到   'System.Linq.IQueryable'C:\ Users \ gromov \ SkyDrive \ Server   Monitor \ Server Monitor \ MainPage.xaml.cs 143 29服务器监视器

2 个答案:

答案 0 :(得分:0)

var  data1 = (from query in document.Descendants("Services")
select new Ser { name = Convert.ToString(query.Element("Name") )
}).ToList();

答案 1 :(得分:0)

Except用于查找未包含在另一个集合中的集合元素。由于returtStr是字符串而不是集合,因此无法正常工作。

我认为你要做的是:

var compareData = data1.Where(s => !keysCollect.Contains(s.name));

或者:

var compareData = data1.Select(s => s.name).Except(keysCollect);