在Linq中使用排序规则到Sql

想象一下这个SQL查询

select * from products order by name collate Persian_100_CI_AI asc 

现在使用Linq:

 product = DB.Products.OrderBy(p => p.name); // what should I do here? 

我该如何应用整理?

您无法通过LINQ语句更改排序规则。 你最好通过应用一个用正确的文化初始化的StringComparer进行内存排序(至少……我希望它是正确的)并忽略大小写( true )。

 DB.Products.AsEnumerable() .OrderBy (x => x, StringComparer.Create(new CultureInfo("fa-IR"), true)) 

没有直接的方法。 解决方法:

在Sql Server中创建函数

 CREATE FUNCTION [dbo].[fnsConvert] ( @p NVARCHAR(2000) , @c NVARCHAR(2000) ) RETURNS NVARCHAR(2000) AS BEGIN IF ( @c = 'Persian_100_CI_AI' ) SET @p = @p COLLATE Persian_100_CI_AI IF ( @c = 'Persian_100_CS_AI' ) SET @p = @p COLLATE Persian_100_CS_AI RETURN @p END 

在模型中导入并使用:

 from o in DB.Products orderby DB.fnsConvert(s.Description, "Persian_100_CI_AI") select o;