mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 增加 ISelect.OrderByRandom() 随机排序适配;
This commit is contained in:
		@@ -512,5 +512,14 @@
 | 
				
			|||||||
            <param name="that"></param>
 | 
					            <param name="that"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            批量注入 Repository,可以参考代码自行调整
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="services"></param>
 | 
				
			||||||
 | 
					            <param name="globalDataFilter"></param>
 | 
				
			||||||
 | 
					            <param name="assemblies"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -892,6 +892,17 @@ namespace FreeSql.Tests.MySqlConnector
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM `tb_topic` a 
 | 
				
			||||||
 | 
					ORDER BY rand() 
 | 
				
			||||||
 | 
					limit 0,10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -818,6 +818,16 @@ namespace FreeSql.Tests.Odbc.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT  t.* FROM (SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -783,6 +783,17 @@ namespace FreeSql.Tests.Odbc.KingbaseES
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -903,6 +903,17 @@ namespace FreeSql.Tests.Odbc.MySql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM `tb_topic` a 
 | 
				
			||||||
 | 
					ORDER BY rand() 
 | 
				
			||||||
 | 
					limit 0,10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -819,6 +819,16 @@ namespace FreeSql.Tests.Odbc.Oracle
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT  t.* FROM (SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -879,6 +879,17 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""tb_topic"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -774,6 +774,16 @@ namespace FreeSql.Tests.Odbc.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT TOP 10 1 
 | 
				
			||||||
 | 
					FROM [tb_topic22] a 
 | 
				
			||||||
 | 
					ORDER BY newid()", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -832,6 +832,16 @@ namespace FreeSql.Tests.Dameng
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT  t.* FROM (SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -819,6 +819,16 @@ namespace FreeSql.Tests.Firebird
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT FIRST 10 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY rand()", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -783,6 +783,17 @@ namespace FreeSql.Tests.KingbaseES
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -955,6 +955,17 @@ LEFT JOIN `TestTypeParentInfo` a__Type__Parent ON a__Type__Parent.`Id` = a__Type
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM `tb_topic` a 
 | 
				
			||||||
 | 
					ORDER BY rand() 
 | 
				
			||||||
 | 
					limit 0,10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -819,6 +819,16 @@ namespace FreeSql.Tests.Oracle
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.Offset(10).OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT  t.* FROM (SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC22"" a 
 | 
				
			||||||
 | 
					ORDER BY dbms_random.value) t WHERE ROWNUM < 11", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -896,6 +896,17 @@ namespace FreeSql.Tests.PostgreSQL
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""tb_topic"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -897,6 +897,17 @@ namespace FreeSql.Tests.ShenTong
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""TB_TOPIC"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -830,6 +830,16 @@ namespace FreeSql.Tests.SqlServer
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT TOP 10 1 
 | 
				
			||||||
 | 
					FROM [tb_topic22] a 
 | 
				
			||||||
 | 
					ORDER BY newid()", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -800,6 +800,17 @@ namespace FreeSql.Tests.Sqlite
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
					            var sql = select.OrderBy(a => new Random().NextDouble()).ToList();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void OrderByRandom()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var t1 = select.OrderByRandom().Limit(10).ToSql("1");
 | 
				
			||||||
 | 
					            Assert.Equal(@"SELECT 1 
 | 
				
			||||||
 | 
					FROM ""tb_topic22"" a 
 | 
				
			||||||
 | 
					ORDER BY random() 
 | 
				
			||||||
 | 
					limit 0,10", t1);
 | 
				
			||||||
 | 
					            var t2 = select.OrderByRandom().Limit(10).ToList();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact]
 | 
					        [Fact]
 | 
				
			||||||
        public void Skip_Offset()
 | 
					        public void Skip_Offset()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -579,4 +579,44 @@ SELECT ");
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    #endregion
 | 
					    #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #region OrderBy Random 随机排序
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 随机排序<para></para>
 | 
				
			||||||
 | 
					    /// 支持:MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/金仓/神通<para></para>
 | 
				
			||||||
 | 
					    /// 不支持:MsAcess
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    /// <returns></returns>
 | 
				
			||||||
 | 
					    public static TSelect OrderByRandom<TSelect, T1>(this ISelect0<TSelect, T1> that) where TSelect : class
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var s0p = that as Select0Provider;
 | 
				
			||||||
 | 
					        switch (s0p._orm.Ado.DataType)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            case DataType.MySql:
 | 
				
			||||||
 | 
					            case DataType.OdbcMySql:
 | 
				
			||||||
 | 
					                return that.OrderBy("rand()");
 | 
				
			||||||
 | 
					            case DataType.SqlServer:
 | 
				
			||||||
 | 
					            case DataType.OdbcSqlServer:
 | 
				
			||||||
 | 
					                return that.OrderBy("newid()");
 | 
				
			||||||
 | 
					            case DataType.PostgreSQL:
 | 
				
			||||||
 | 
					            case DataType.OdbcPostgreSQL:
 | 
				
			||||||
 | 
					            case DataType.KingbaseES:
 | 
				
			||||||
 | 
					            case DataType.OdbcKingbaseES:
 | 
				
			||||||
 | 
					            case DataType.ShenTong:
 | 
				
			||||||
 | 
					                return that.OrderBy("random()");
 | 
				
			||||||
 | 
					            case DataType.Oracle:
 | 
				
			||||||
 | 
					            case DataType.Dameng:
 | 
				
			||||||
 | 
					            case DataType.OdbcOracle:
 | 
				
			||||||
 | 
					            case DataType.OdbcDameng:
 | 
				
			||||||
 | 
					                return that.OrderBy("dbms_random.value");
 | 
				
			||||||
 | 
					            case DataType.Sqlite:
 | 
				
			||||||
 | 
					                return that.OrderBy("random()");
 | 
				
			||||||
 | 
					            //case DataType.MsAccess:
 | 
				
			||||||
 | 
					            //    return that.OrderBy("rnd()");
 | 
				
			||||||
 | 
					            case DataType.Firebird:
 | 
				
			||||||
 | 
					                return that.OrderBy("rand()");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        throw new NotSupportedException($"{s0p._orm.Ado.DataType} 不支持 OrderByRandom 随机排序");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    #endregion
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4495,6 +4495,14 @@
 | 
				
			|||||||
            <param name="level">递归层级</param>
 | 
					            <param name="level">递归层级</param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:FreeSqlGlobalExtensions.OrderByRandom``2(FreeSql.ISelect0{``0,``1})">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            随机排序<para></para>
 | 
				
			||||||
 | 
					            支持:MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/金仓/神通<para></para>
 | 
				
			||||||
 | 
					            不支持:MsAcess
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
        <member name="M:System.Linq.Expressions.LambadaExpressionExtensions.And``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
 | 
					        <member name="M:System.Linq.Expressions.LambadaExpressionExtensions.And``1(System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}},System.Linq.Expressions.Expression{System.Func{``0,System.Boolean}})">
 | 
				
			||||||
            <summary>
 | 
					            <summary>
 | 
				
			||||||
            使用 and 拼接两个 lambda 表达式
 | 
					            使用 and 拼接两个 lambda 表达式
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user