se本身也不是SQL的替代品。您可能希望在类似ORM的实体框架之上使用它。ORM的工作是将对象映射到表,而不是公开这些表。用干净的数据做这件事要容易得多在你的问题中有很多是不清楚的。SQL为什么不是100%正确?这是哪个数据库提供商?在写LINQ的过程中,

se本身也不是SQL的替代品。您可能希望在类似ORM的实体框架之上使用它。ORM的工作是将对象映射到表,而不是公开这些表。用干净的数据做这件事要容易得多在你的问题中有很多是不清楚的。SQL为什么不是100%正确?这是哪个数据库提供商?在写LINQ的过程中,,linq,linq-to-entities,Linq,Linq To Entities,se本身也不是SQL的替代品。您可能希望在类似ORM的实体框架之上使用它。ORM的工作是将对象映射到表,而不是公开这些表。用干净的数据做这件事要容易得多在你的问题中有很多是不清楚的。SQL为什么不是100%正确?这是哪个数据库提供商?在写LINQ的过程中,你在哪里?您是否已经使用实体框架将表映射到类模型?如果是,哪个版本?哪个数据库?我使用的数据库是SQLite。现在我正在SQLite中测试SQL查询,目的是将此SQL查询更改为LINQ查询。在viewmodel中,我从表中获取所有数据,因此现在


se本身也不是SQL的替代品。您可能希望在类似ORM的实体框架之上使用它。ORM的工作是将对象映射到表,而不是公开这些表。用干净的数据做这件事要容易得多在你的问题中有很多是不清楚的。SQL为什么不是100%正确?这是哪个数据库提供商?在写LINQ的过程中,你在哪里?您是否已经使用实体框架将表映射到类模型?如果是,哪个版本?哪个数据库?我使用的数据库是SQLite。现在我正在SQLite中测试SQL查询,目的是将此SQL查询更改为LINQ查询。在viewmodel中,我从表中获取所有数据,因此现在我只需要过滤数据/创建Linq查询。(我正在使用C#中的Xamarin Master detail)只需要(…)创建一个Linq查询。在编写第一个LINQ语句之前,您知道必须做出哪些选择吗?我们不能做出这些决定。您将linq标记为实体。这是一个很好的起点。
|Date|Count1|Count2|

|1977|1     |0     |

|1974|1     |0     |

|1972|1     |0     |

|1971|2     |0     |

|1999|0     |15    |
select Elhunyva, Osszes1 as `OsszesHalott`, Osszes2 as `OsszesSZ` from 
(
(select substr(`Halott adatai`,0,instr(`Halott adatai`,'-')) as Elhunyva, Count(*) as Osszes1 from Holtak
group by substr(`Halott adatai`,0,instr(`Halott adatai`,'-'))) A left join
(select substr(`Halott adatai`,instr(`Halott adatai`, '-')+1) as Szuletve, Count(*) as Osszes2 from Holtak
group by substr(`Halott adatai`,instr(`Halott adatai`, '-')+1)) B on B.Szuletve=A.Elhunyva
)
union all
select Elhunyva, Osszes1 as `OsszesHalott`, Osszes2 as `OsszesSzületett` from 
(
(select substr(`Halott adatai`,instr(`Halott adatai`, '-')+1) as Elhunyva, Count(*) as Osszes1 from Holtak
group by substr(`Halott adatai`,instr(`Halott adatai`, '-')+1)) A left join
(select substr(`Halott adatai`,0,instr(`Halott adatai`,'-')) as Szuletve, Count(*) as Osszes2 from Holtak
group by substr(`Halott adatai`,instr(`Halott adatai`, '-')+1)) B on B.Szuletve=A.Elhunyva
) GROUP BY ELHUNYVA ORDER BY ELHUNYVA
public class Row
{
    public int ID;
    public int SID;
    public string LastCol;
}
public class ResultRow
{
    public string Date;
    public int Count1;
    public int Count2;
}

#region Data preparing
string[] dtRanges =
{
    "1977-1999",
    "1974-1999",
    "1972-1999",
    "1971-1999",
    "1971-1999",
    "1961-1999",
    "1960-1999",
    "1957-1999",
    "1953-1999",
    "1950-1999",
    "1950-1999",
    "1946-1999",
    "1943-1999",
    "1940-1999",
    "1939-1999",
    "1920-1920" // To see what's going to happen whean date in both columns |1920|1|1|
};

List<Row> table = dtRanges
    .Select(x => new Row { LastCol = x })
    .ToList();
#endregion

var part1 = table.GroupBy(
    key => key.LastCol.Split('-').First(), 
    val => val,
    (key, val) => new ResultRow
    {
        Date = key,
        Count1 = val.Count()
    });

var part2 = table.GroupBy(
    key => key.LastCol.Split('-').Last(), 
    val => val,
    (key, val) => new ResultRow
    {
        Date = key,
        Count2 = val.Count()
    });

var result = part1
    .Concat(part2)
    .GroupBy(
        key => key.Date,
        val => val,
        (key, val) => new ResultRow
        {
            Date = key,
            Count1 = val.Sum(x => x.Count1),
            Count2 = val.Sum(x => x.Count2),
        }).ToList();