gpt4 book ai didi

linq - 如何动态调用指定不同表名的 Linq-to-Entities (EF4) 查询?

转载 作者:行者123 更新时间:2023-12-04 06:10:30 24 4
gpt4 key购买 nike

我有一堆表,它们都有一个名为 ResourceID 的字段。从外部进程填充。我想查看每个表并根据主列表验证该 ID。代码很简单,但会重复:

var resList = (from r in dc.ResourceMasterEntities select r.ResourceId).ToList();
var res = (from rs in resList select (int?)rs).ToList();

var stage = (from s in dc.TableOne select s.ResourceId).ToList();
foreach (var invalidResourceID in stage.Except(res).ToList())
{
errList.Add("Bad ID found:" + invalidResourceID );
}

stage = (from s in dc.TableTwo select s.ResourceId).ToList();
foreach (var invalidResourceID in stage.Except(res).ToList())
{
errList.Add("Bad ID found:" + invalidResourceID );
}

// more of the same with different tables

我想创建一个函数,我可以在其中传递表的名称( TableOneTableTwo 等),而不必编写所有这些重复的代码。这可以用 Linq 完成吗? (最好不要使用 ExecuteQuery :-))

最佳答案

您可以创建一个将 IQueryable 作为参数的函数。

该函数将如下所示:

  private void CheckTable(IQueryable<EntityType> table)
{
var stage = (from s in table select s.ResourceId).ToList();
foreach (var invalidResourceID in stage.Except(res).ToList())
{
errList.Add("Bad ID found:" + invalidResourceID);
}
}

// Execute the function like:
CheckTable(dc.TableOne);

您可以选择是创建 errList 和 res 类级别的属性,还是将它们作为参数传递给函数

关于linq - 如何动态调用指定不同表名的 Linq-to-Entities (EF4) 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7840348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com