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
C# 如何使用XPO为一个特定行执行自由(非关联)联接?_C#_Linq_Devexpress_Xpo - Fatal编程技术网

C# 如何使用XPO为一个特定行执行自由(非关联)联接?

C# 如何使用XPO为一个特定行执行自由(非关联)联接?,c#,linq,devexpress,xpo,C#,Linq,Devexpress,Xpo,假设我有一个名为DailyVisitorSummary的pesistent类,它描述每个网页每天有多少访问者。对于simplicitzy,假设我们将一天表示为一个纯整数 现在,我想创建一个查询来检索特定日期的数据,以及前几天和后几天的数据。我所知道的是,对于同一个网页,肯定最多会有一条前一天和第二天的数据记录,因此我可以编写一个SQL查询(MySQL语法),如下所示: 我想用结果填充以下viewmodel: public class VMDailyVisitors3Day { public

假设我有一个名为DailyVisitorSummary的pesistent类,它描述每个网页每天有多少访问者。对于simplicitzy,假设我们将一天表示为一个纯整数

现在,我想创建一个查询来检索特定日期的数据,以及前几天和后几天的数据。我所知道的是,对于同一个网页,肯定最多会有一条前一天和第二天的数据记录,因此我可以编写一个SQL查询(MySQL语法),如下所示:

我想用结果填充以下viewmodel:

public class VMDailyVisitors3Day {
   public VMDailyVisitors CurrentDay { get; set; }
   public VMDailyVisitors PreviousDay { get; set; }
   public VMDailyVisitors NextDay { get; set; }
}

public class VMDailyVisitors {
    public int Day { get; set;; }
    public int WebPageID { get; set; }
    public int VisitorCount { get; set; }
}
我如何使用Linq到XPO进行此查询?
我需要一个LINQ解决方案,因为我需要在服务器模式MVC GridView中使用结果。

LINQ to XPO仅支持组加入。一个可能的解决方案是在数据库中创建一个SQL视图,并使用SQL查询用数据填充它。然后可以将另一个持久类映射到此视图以获取数据


视图必须至少有一列具有唯一值。不要使用newid函数或类似函数来生成唯一值,因为这种方法在每次查询数据时为同一行指定不同的值。服务器模式使用键列标识行。使用实际数据填充键列。例如,连接网页和日期列中的值。不过,请确保这会产生不同的值。

在DX支持的帮助下,我找到了一个解决方法,使用PersistentAliasAttribute作为中间步骤,在这里我可以进行自由连接,然后在XPQuery中使用该属性。如果有人感兴趣,.

谢谢你,很抱歉反应太晚。不幸的是,我不可能使用视图,但是我知道它们,并在另一个项目中使用了这种技术。无论如何,谢谢你。
public class VMDailyVisitors3Day {
   public VMDailyVisitors CurrentDay { get; set; }
   public VMDailyVisitors PreviousDay { get; set; }
   public VMDailyVisitors NextDay { get; set; }
}

public class VMDailyVisitors {
    public int Day { get; set;; }
    public int WebPageID { get; set; }
    public int VisitorCount { get; set; }
}