mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 增加 IQueryable RestoreToSelect 扩展方法,将 IQueryable 转回成 ISelect<T>;
This commit is contained in:
@ -3,10 +3,8 @@ using System;
|
||||
using System.Linq;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.LinqToSql
|
||||
namespace FreeSql.Tests.Linq
|
||||
{
|
||||
|
||||
|
||||
class TestLinqToSql
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
@ -29,7 +27,7 @@ namespace FreeSql.Tests.LinqToSql
|
||||
public DateTime createtime { get; set; } = DateTime.Now;
|
||||
}
|
||||
|
||||
public class SqliteLinqToSqlTests
|
||||
public class ISelectLinqToSqlTests
|
||||
{
|
||||
|
||||
[Fact]
|
@ -58,29 +58,6 @@ namespace FreeSql.Tests.Linq
|
||||
Assert.Equal(item.id, t1[0].id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GroupBy()
|
||||
{
|
||||
//var item = new TestQueryableLinqToSql { name = Guid.NewGuid().ToString() };
|
||||
//g.sqlite.Insert<TestQueryableLinqToSql>().AppendData(item).ExecuteAffrows();
|
||||
|
||||
//var t1 = (from a in g.sqlite.Select<TestQueryableLinqToSql>().AsQueryable()
|
||||
// where a.id == item.id
|
||||
// group a by new { a.id, a.name } into g
|
||||
// select new
|
||||
// {
|
||||
// g.Key.id,
|
||||
// g.Key.name,
|
||||
// cou = g.Count(),
|
||||
// avg = g.Average(x => x.click),
|
||||
// sum = g.Sum(x => x.click),
|
||||
// max = g.Max(x => x.click),
|
||||
// min = g.Min(x => x.click)
|
||||
// }).ToList();
|
||||
//Assert.True(t1.Any());
|
||||
//Assert.Equal(item.id, t1.First().id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CaseWhen()
|
||||
{
|
@ -0,0 +1,50 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using FreeSql;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Xunit;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NpgsqlTypes;
|
||||
using Npgsql.LegacyPostgis;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Threading;
|
||||
using System.Data.SqlClient;
|
||||
using kwlib;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace FreeSql.Tests.Linq
|
||||
{
|
||||
public class QueryableRestoreToSelectTest
|
||||
{
|
||||
class qt01
|
||||
{
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
|
||||
[Navigate(nameof(qt01_item.qt01id))]
|
||||
public List<qt01_item> items { get; set; }
|
||||
}
|
||||
class qt01_item
|
||||
{
|
||||
[Column(IsIdentity = true)]
|
||||
public int id { get; set; }
|
||||
public string title { get; set; }
|
||||
public int qt01id { get; set; }
|
||||
}
|
||||
IFreeSql fsql => g.sqlite;
|
||||
|
||||
[Fact]
|
||||
public void RestoreToSelect()
|
||||
{
|
||||
Assert.Equal(fsql.Select<qt01>().Skip(2).First(a => a.name), fsql.Select<qt01>().AsQueryable().Skip(2).Take(1).RestoreToSelect().First(a => a.name));
|
||||
Assert.Equal(fsql.Select<qt01>().Skip(2).First(a => new { a.name }).name, fsql.Select<qt01>().AsQueryable().Skip(2).Take(1).RestoreToSelect().First(a => new { a.name }).name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user