1

我遇到了一个非常复杂的实体框架问题,我不知道如何用 SQL 或 EF 编写查询。

我的桌子是这样的:

RecordId - int
ListId - int
ScreenName - string
Name - string
Description - string
Community - string
Value1 - decimal
Value2 - decimal
Value3 - decimal

我想搜索这个表,我需要根据 ScreenName 和 Community 的组合来区分结果。换句话说,如果有多个具有相同 ScreenName 和 Community 的记录,我只想要回一行。如果有多个具有相同 ScreenName 和两个不同社区的记录,那么我应该得到 2 条记录。

我想要整行,而不仅仅是 ScreenName 和 Community。

在对记录进行分组时,如果我可以根据 ListId 选择要保留的记录(越低越好),那将是理想的。

是否可以执行我在实体框架中提出的任何要求?

4

1 回答 1

1

经过大量研究和大量时间对 SQL Server 感到沮丧后,我终于弄明白了

SQL

select * from ListRecord lr
where ListRecordId = 
(
    select top 1 ListRecordId
    from ListRecord
    where ScreenName = lr.ScreenName
    and Community = lr.Community
    order by ListId
)

实体框架

var query = from x in db.ListRecords
            where x.ListRecordId == (
                db.ListRecords.Where(y => y.ScreenName == x.ScreenName && y.Community == x.Community)
                .OrderBy(y => y.ListId)
                .Select(y => y.ListRecordId).FirstOrDefault()
                )
            select x;

var list = query.ToList();
于 2013-09-24T15:36:54.057 回答