C# 比较两个listview,并将不匹配的项放在Windows窗体C的第三个listview中#
我有两个windows窗体的列表视图,其中包含数据。有些记录是常见的,而有些则不是。我需要那些不匹配的记录。如何仅获取不匹配的记录。尝试使用Linq Except方法获取不匹配项的列表。尝试使用Linq Except方法获取不匹配项的列表。尝试以下操作:C# 比较两个listview,并将不匹配的项放在Windows窗体C的第三个listview中#,c#,winforms,listview,C#,Winforms,Listview,我有两个windows窗体的列表视图,其中包含数据。有些记录是常见的,而有些则不是。我需要那些不匹配的记录。如何仅获取不匹配的记录。尝试使用Linq Except方法获取不匹配项的列表。尝试使用Linq Except方法获取不匹配项的列表。尝试以下操作: using Sustem.Linq; // Add this line. //If it doesn't work add a reference to System.Core.dll na
using Sustem.Linq; // Add this line.
//If it doesn't work add a reference to System.Core.dll
namespace FormAppp
{
public class Form1 : Form
{
public Form1()
{
}
....
void DoInitialization()
{
listView1.Items.Add(new ListViewItem("1"));
listView1.Items.Add(new ListViewItem("2"));
listView1.Items.Add(new ListViewItem("3"));
listView2.Items.Add(new ListViewItem("1"));
listView2.Items.Add(new ListViewItem("3"));
var list1Source = listView1.Items.Cast<ListViewItem>();
var list2Source = listView2.Items.Cast<ListViewItem>();
var list3Source = list1Source.Where(x =>
list2Source.All(y => y.Text != x.Text));
}
}
}
使用Sustem.Linq;//添加这一行。
//如果无效,请添加对System.Core.dll的引用
名称空间格式
{
公开课表格1:表格
{
公共表格1()
{
}
....
void DoInitialization()
{
listView1.Items.Add(新ListViewItem(“1”));
listView1.Items.Add(新ListViewItem(“2”));
listView1.Items.Add(新ListViewItem(“3”));
listView2.Items.Add(新ListViewItem(“1”));
listView2.Items.Add(新ListViewItem(“3”));
var list1Source=listView1.Items.Cast();
var list2Source=listView2.Items.Cast();
var list3Source=list1Source.Where(x=>
list2Source.All(y=>y.Text!=x.Text));
}
}
}
试试这个:
using Sustem.Linq; // Add this line.
//If it doesn't work add a reference to System.Core.dll
namespace FormAppp
{
public class Form1 : Form
{
public Form1()
{
}
....
void DoInitialization()
{
listView1.Items.Add(new ListViewItem("1"));
listView1.Items.Add(new ListViewItem("2"));
listView1.Items.Add(new ListViewItem("3"));
listView2.Items.Add(new ListViewItem("1"));
listView2.Items.Add(new ListViewItem("3"));
var list1Source = listView1.Items.Cast<ListViewItem>();
var list2Source = listView2.Items.Cast<ListViewItem>();
var list3Source = list1Source.Where(x =>
list2Source.All(y => y.Text != x.Text));
}
}
}
使用Sustem.Linq;//添加这一行。
//如果无效,请添加对System.Core.dll的引用
名称空间格式
{
公开课表格1:表格
{
公共表格1()
{
}
....
void DoInitialization()
{
listView1.Items.Add(新ListViewItem(“1”));
listView1.Items.Add(新ListViewItem(“2”));
listView1.Items.Add(新ListViewItem(“3”));
listView2.Items.Add(新ListViewItem(“1”));
listView2.Items.Add(新ListViewItem(“3”));
var list1Source=listView1.Items.Cast();
var list2Source=listView2.Items.Cast();
var list3Source=list1Source.Where(x=>
list2Source.All(y=>y.Text!=x.Text));
}
}
}
本帖已回答了可能重复的问题:本帖已回答了可能重复的问题:本帖已回答了可能重复的问题:只需添加此问题:使用System.Linq;我刚刚更新了我的答案。看看评论。我希望它能帮助你。至于你关于Where(x=>list2Source.All(…)的问题。我不能简单回答。我可以让你阅读以下文章:。只需添加以下内容:使用System.Linq;我刚刚更新了我的答案。看看评论。我希望它能帮助你。至于你关于Where(x=>list2Source.All(…)的问题。我不能简单回答。我可以让您阅读以下文章:。只需添加以下内容:使用System.Linq;我刚刚更新了我的答案。请查看评论。我希望它能帮助您。至于您关于Where(x=>list2Source.All(…)的问题。我不能简单回答。我可以让您阅读以下文章:。使用Sergei的代码初始化这两个视图,然后类似的操作会给您带来需要添加到第三个ListView变量lv1Contents=listView1.Items.Cast().Select(xx=>xx.Content);var lv1Contents=listView2.Items.Cast().Select()中的差异(xx=>xx.Content);var diff=lv1Contents.Except(lv2Contents);使用Sergei的代码初始化这两个视图,然后类似的东西会给您带来差异,需要添加到第三个ListView var lv1Contents=listView1.Items.Cast().Select(xx=>xx.Content);var lv1Contents=listView2.Items.Cast().Select()中(xx=>xx.Content);var diff=lv1Contents.Except(lv2Contents);使用Sergei的代码初始化这两个视图,然后类似的东西会给您带来差异,需要添加到第三个ListView var lv1Contents=listView1.Items.Cast().Select(xx=>xx.Content);var lv1Contents=listView2.Items.Cast().Select()中(xx=>xx.Content);var diff=lv1内容。除了(lv2内容);