请教嵌套foreach的有关问题
请问嵌套foreach的问题
LIist<a> list1; a的实体有 id name
List<b> list2; b的有a表的id和另一个表的id
foreach (var item in list1) {
foreach (var item2 in list2) {
if(item.id==item2.id)
{
<label><input type="checkbox" checked='checked' />item .name</label>
break;
}
}
}
我这样可以得到list2中选中的值,但是我现在还想得到list1中没有选中的值,请问怎么操作
就比如
a的id: 2,3,4
b的id :2,3
我最后想得到的是2(选中),3(选中),4(不选中)
if后面加else的话,对比的就会得到2(选中),3(不选中),3(选中),4(不选中) 肯定是不行的 请问要怎么实现
------解决思路----------------------
1、反过来循环,list2嵌套遍历list1
或者
2、定义一个StringBuilder sb = new StringBuilder();
在if为true的时候,sb.Append(item .name)
最后sb不在list1.ToArray()里面的,就是list1未选中的
------解决思路----------------------
如果c为null,则没有匹配到,否则代表有join
------解决思路----------------------
foreach (var item in list1) {
foreach (var item2 in list2) {
if(item.id==item2.id)
{
<label><input type="checkbox" checked='checked' />item .name</label>
break; 这里的break去掉
}else
{
这里加入未选中的item.Name
}
}
}
LIist<a> list1; a的实体有 id name
List<b> list2; b的有a表的id和另一个表的id
foreach (var item in list1) {
foreach (var item2 in list2) {
if(item.id==item2.id)
{
<label><input type="checkbox" checked='checked' />item .name</label>
break;
}
}
}
我这样可以得到list2中选中的值,但是我现在还想得到list1中没有选中的值,请问怎么操作
就比如
a的id: 2,3,4
b的id :2,3
我最后想得到的是2(选中),3(选中),4(不选中)
if后面加else的话,对比的就会得到2(选中),3(不选中),3(选中),4(不选中) 肯定是不行的 请问要怎么实现
------解决思路----------------------
1、反过来循环,list2嵌套遍历list1
或者
2、定义一个StringBuilder sb = new StringBuilder();
在if为true的时候,sb.Append(item .name)
最后sb不在list1.ToArray()里面的,就是list1未选中的
------解决思路----------------------
List<a> list1 = new List<a>();
List<b> list2 = new List<b>();
var query = from a in list1
join b in list2 on a.id equals b.id into g
from c in g.DefaultIfEmpty()
select new { a, c };
如果c为null,则没有匹配到,否则代表有join
------解决思路----------------------
foreach (var item in list1) {
foreach (var item2 in list2) {
if(item.id==item2.id)
{
<label><input type="checkbox" checked='checked' />item .name</label>
break; 这里的break去掉
}else
{
这里加入未选中的item.Name
}
}
}