Linq将值从一个表分配到另一个表中

Linq将值从一个表分配到另一个表中,linq,join,Linq,Join,我试图从另一个表中查找列的值,然后在我的where子句中使用新查找的值。例如,我有以下表格 ID Name 1 Jan 2 Feb 3 March Product Customer Start End A C Feb March A B Jan March B C March Jan 在上面的示例中,我需要查询开始ID大于结

我试图从另一个表中查找列的值,然后在我的where子句中使用新查找的值。例如,我有以下表格

ID    Name
 1     Jan
 2     Feb
 3     March

Product    Customer  Start   End
  A          C        Feb    March
  A          B        Jan    March
  B          C        March  Jan
在上面的示例中,我需要查询开始ID大于结束ID的记录列表。例如,B-C-March-Jan是我要查找的记录。 我应该使用join吗?此外,如果可能的话,查询语法将非常有用

我的问题是:

 var vInvalidStartEnd = from p in vRecords
                        where (from t in vTimePeriods where t.Name == p["Start"] select t.TID).First().Cast<int>() > (from t in vTimePeriods where t.TName == p["End"] select t.ID).First().Cast<int>()
                        select new
                        {
                           Product = p["Product"],
                           Location = p["Location"],
                           Start = p["Start"],
                           End = p["End"]
                        };

谢谢

假设ID定义了比另一个晚的名称。Tim在评论中的问题可能是因为,首先,使用名称值作为链接而不是ID是不常见的,其次,ID不能很好地指示哪个月比另一个月大。如果我必须像您那样使用月份名称,我可能会在vTimePeriods表中有一个id、一个名称,然后是一个order值

from p in vRecords
join start in vTimePeriods on p["Start"] equals start["Name"]
join end in vTimePeriods on p["End"] equals end["Name"]
where (int)end["ID"] < (int)start["ID"]
select new
{
    Product = p["Product"],
    Location = p["Location"],
    Start = p["Start"],
    End = p["End"]
};

我不知道LINQtoDataSet的细节,但它看起来是这样的。

假设ID定义了比另一个更晚的名称。Tim在评论中的问题可能是因为,首先,使用名称值作为链接而不是ID是不常见的,其次,ID不能很好地指示哪个月比另一个月大。如果我必须像您那样使用月份名称,我可能会在vTimePeriods表中有一个id、一个名称,然后是一个order值

from p in vRecords
join start in vTimePeriods on p["Start"] equals start["Name"]
join end in vTimePeriods on p["End"] equals end["Name"]
where (int)end["ID"] < (int)start["ID"]
select new
{
    Product = p["Product"],
    Location = p["Location"],
    Start = p["Start"],
    End = p["End"]
};

我不知道Linq to数据集的具体情况,但它看起来是这样的。

是开始和结束日期时间还是字符串?这是C、Linq到SQL还是Linq到数据集或Linq到实体还是。。。?您尝试过什么?您好,开始和结束是字符串,这是Linq To数据集。我将用我当前的查询更新我的帖子。Thanks@TimSchmelter我已经用我的问题更新了帖子。你的问题仍然不清楚。开始ID大于结束ID意味着什么?这是一个打字错误,因为我认为你想要比较月份名称而不是ID?这些表之间的关系如何?第一个表中只有一个ID。Tim,我在这里使用ID作为示例。但是,我们的想法是使用Product的名称从Months表中查找一个int类型的值,然后决定哪个更大?这是C、Linq到SQL还是Linq到数据集或Linq到实体还是。。。?您尝试过什么?您好,开始和结束是字符串,这是Linq To数据集。我将用我当前的查询更新我的帖子。Thanks@TimSchmelter我已经用我的问题更新了帖子。你的问题仍然不清楚。开始ID大于结束ID意味着什么?这是一个打字错误,因为我认为你想要比较月份名称而不是ID?这些表之间的关系如何?第一个表中只有一个ID。Tim,我在这里使用ID作为示例。但是我们的想法是使用Product的名称从Months表中查找一个int类型的值,然后决定哪个更大。我同意。我不应该使用ID,可能使用了优先级之类的值。我同意。我不应该使用ID,可能使用了优先级之类的值