Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何循环通过LINQ到实体集合的集合?_Linq_Linq To Entities - Fatal编程技术网

如何循环通过LINQ到实体集合的集合?

如何循环通过LINQ到实体集合的集合?,linq,linq-to-entities,Linq,Linq To Entities,我有以下LINQ to Entities调用来填充集合变量: var insuredFamily = db.Insureds.Where(x => x.ssn.Split('-')[0] == tmp[MemberId]) .OrderBy(x => x.fk_relation); 如何在集合中的项目之间循环,打印出每行的项目标题和项目值 我不熟悉LINQtoEntities,所以我所要做的就是遍历一个构建的集合,并将标题和行输出到一个日

我有以下LINQ to Entities调用来填充集合变量:

var insuredFamily = db.Insureds.Where(x => x.ssn.Split('-')[0] == tmp[MemberId])
                      .OrderBy(x => x.fk_relation);
如何在集合中的项目之间循环,打印出每行的项目标题和项目值

我不熟悉LINQtoEntities,所以我所要做的就是遍历一个构建的集合,并将标题和行输出到一个日志文件,这样我就可以快速查看集合中返回的内容,而无需在调试器中单步遍历每一行。这可能吗


如果不能使用通用循环,是否可以将数据网格的数据源设置为集合变量并在网格中查看集合?

对于初学者,这不能是LINQ-to_Entities语句。无法将
x.ssn.Split('-')[0]==tmp[MemberId]
转换为SQL。除非这是EF Core,否则当表达式包含不支持的部分时,它会自动切换到客户端求值。你没有明确说明这一点

无论如何,在调试时添加日志只是为了查看集合的内容,这是一种过分的做法。当代码在断点处停止时,可以使用VisualStudio中的立即窗口输出数据

要使其真正有用,请重写
Insured
类的
ToString
方法。当我用一些
产品
类来做这件事时

public override string ToString()
{
    return string.Format("{0}, {1}", this.Name, this.UnitPrice);
}
。。。然后在调试器中插入一行代码,如

var prod = context.Products;
。。然后在即时窗口中,我可以键入

?产品目录()
。。。这给了我:

Count=6
[0]:{Nike Air,150.00}
[1] :{WebCam,23.00}
[2] :{鼠标,7.00}
[3] :{酷包,4.50}
[4] :{键盘,47.30}
[5] :{Action cam,73.00}
(和一些SQL日志记录)


请注意,这是侵入式调试。通过调用
ToList
,将强制执行查询。这可能会以影响代码行为的方式更改状态。不过,日志记录也是如此。

谢谢您的建议,但下面两行代码似乎可以满足我的需要。我只是想可视化LINQ到SQL查询的结果

var nationalities = db.Nationalities.OrderBy(x => x.pk_Nationality);
dgvResults.DataSource = nationalities;

此代码只需将集合放入我的数据网格视图的数据源中,即可查看所有内容。

foreach
loop?是的,但我不熟悉引用项目标题和项目值的语法。foreach(var familyMember in Insured Family){foreach(var item in familyMember){header=item.header?value=item.value?}}是否如此接近?
familyMember
被保险人
表中的一个实体。如果您想从其他表中枚举一些相关的实体,那么内部foreach应该类似于
foreach(familtyMember.Items中的var项)
。您应该添加投保
类别的定义。至少要显示它的重要属性我需要一些足够通用的东西来处理我从数据库中引用的任何表。foreach(familyMember.Items中的var item)给了我一个语法错误,因为没有定义.Items。通过被保险类别的所有属性循环的正确方式是什么?C#是强类型的,因此,除非您求助于类型不安全且可能在运行时导致错误的反射或
dynamic
,否则无法尝试创建适用于不同类型的“通用”循环。