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# 按条件查找记录,如果记录具有某个相等字段(LINQ),则仅选择一个_C#_Linq_Linq To Sql - Fatal编程技术网

C# 按条件查找记录,如果记录具有某个相等字段(LINQ),则仅选择一个

C# 按条件查找记录,如果记录具有某个相等字段(LINQ),则仅选择一个,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一个类BaseEvent,它有以下字段: Name, RecurrenceStart, RecurrenceEnd, SimillarId 例如,我们在表中有一个数据: Name RecurrenceStart RecurrenceEnd SimillarId Event1 2012-02-21 09:00:00.000 2012-02-28 11:30:00.000 1 Event1

我有一个类
BaseEvent
,它有以下字段:

Name, RecurrenceStart, RecurrenceEnd, SimillarId
例如,我们在表中有一个数据:

Name           RecurrenceStart                RecurrenceEnd          SimillarId 
Event1      2012-02-21 09:00:00.000      2012-02-28 11:30:00.000        1
Event1      2012-02-21 04:30:00.000      2012-02-28 07:00:00.000        1
Event2      2012-02-21 06:30:00.000      2012-02-29 09:00:00.000        2
我们有以下问题:

   var today = DateTime.Now;
    return  Database.BaseEvents.Where(e => e.RecurrenceStart.Value.Date <= today 
             && e.RecurrenceEnd.Value.Date >= today).ToList();
var today=DateTime.Now;
返回Database.BaseEvents.Where(e=>e.RecurrenceStart.Value.Date=today).ToList();
查询返回所有3条记录(对于当前日期)。但前两项记录是同一事件。 我希望结果中只有两条记录:3和(1或2)。
我该怎么做?
谢谢

p.S.我是为了这个目的而引入SimillarId的,但我不知道如何使用它构建查询

p.S.2.必要时更改问题名称。

尝试以下方法:

var today = DateTime.Now; 
    return  Database.BaseEvents.Where(e => e.RecurrenceStart.Value.Date <= today  
             && e.RecurrenceEnd.Value.Date >= today)
            .GroupBy(v => v.Name).Select(g => g.First()).ToList();
var today=DateTime.Now;
返回Database.BaseEvents.Where(e=>e.RecurrenceStart.Value.Date=today)
.GroupBy(v=>v.Name).Select(g=>g.First()).ToList();
试试这个:

var today = DateTime.Now; 
    return  Database.BaseEvents.Where(e => e.RecurrenceStart.Value.Date <= today  
             && e.RecurrenceEnd.Value.Date >= today)
            .GroupBy(v => v.Name).Select(g => g.First()).ToList();
var today=DateTime.Now;
返回Database.BaseEvents.Where(e=>e.RecurrenceStart.Value.Date=today)
.GroupBy(v=>v.Name).Select(g=>g.First()).ToList();

使用
.Distinct()
IEqualityComparer
作为必须首先实现的参数。

使用
.Distinct()
使用
IEqualityComparer
作为必须首先实现的参数。

要使
Distinct
正常工作,需要在对象上实现
IEqualityComparer
。我不知道这对您是否可行。要使
Distinct
正常工作,您需要在对象上实现
IEqualityComparer
。我不知道这对你是否可行。