繁体   English   中英

从多个不相交的表 (EF6) 查询数据

[英]Querying data from multiple disjoint tables (EF6)

我目前正在尝试自动执行搜索任务。 基本上,我有多个这样的表:

  • 带有列的表A:Id、PartNumber、Value、R
  • 带有列的 TableB:Id、PartNumber、Value、C
  • 带有列的 TableC:Id、PartNumber、Value、X
  • ...

基本上是多个非常相似的表。 我现在要做的是在“PartNumber”和“Value”字段中搜索文本字符串。 我不介意它是否出现在任何 R、C、X 列中。

有没有办法

  1. 查询存在哪些表名
  2. 然后对每个表执行相同的查询
  3. 连接结果(我不介意列表中的类型是否不同,或者它是否成为新类型)

如果添加了新表,则只应将其添加到上下文中,然后自动进行搜索。

假设你有

class TableA
{
    public int Id { get; set; }
    public string PartNumber { get; set; }
    public string Value { get; set; }
    public int R { get; set; }
}

class TableB
{
    public int Id { get; set; }
    public string PartNumber { get; set; }
    public string Value { get; set; }
    public int C { get; set; }
}

class TableC
{
    public int Id { get; set; }
    public string PartNumber { get; set; }
    public string Value { get; set; }
    public int X { get; set; }
}

List<TableA> tableAs = new List<TableA>();
List<TableB> tableBs = new List<TableB>();
List<TableC> tableCs = new List<TableC>();

您可以查询它的方法之一是这样的:

var result = tableAs.Select(e => (e.PartNumber, e.Value))
    .Union(tableBs.Select(e => (e.PartNumber, e.Value)))
    .Union(tableCs.Select(e => (e.PartNumber, e.Value)))
    .Where(e => e.PartNumber.Contains("something") || e.Value.Contains("something else"))
    .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM