- 增加 IQueryable RestoreToSelect 扩展方法,将 IQueryable 转回成 ISelect<T>;

This commit is contained in:
28810
2020-04-10 22:37:42 +08:00
parent 52fbe5ed86
commit 5e531b2521
10 changed files with 266 additions and 253 deletions

View File

@ -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]

View File

@ -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()
{

View File

@ -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);
}
}
}