کوئری نویسی در EF Core - قسمت هفتم - کار با رشتهها
نویسنده: وحید نصیری
تاریخ: ۱۳۹۹/۰۵/۱۲ ۹:۵۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
var members = context.Members
.Select(member => new { Name = member.Surname + ", " + member.FirstName })
.ToList();
var facilities = context.Facilities
.Where(facility => facility.Name.StartsWith("Tennis"))
.ToList();
var members = context.Members
.Select(member => new { member.MemId, member.Telephone })
.Where(member => member.Telephone.Contains("(")
&& member.Telephone.Contains(")"))
.ToList();
members = context.Members
.Select(member => new { member.MemId, member.Telephone })
.Where(member => EF.Functions.Like(member.Telephone, "%[()]%"))
.ToList();
SELECT CONVERT (NVARCHAR (MAX), [m].[ZipCode]) AS [Zip] FROM [Members] AS [m] ORDER BY CONVERT (NVARCHAR (MAX), [m].[ZipCode]);
var members = context.Members
.Select(member => new { ZipCode = Convert.ToString(member.ZipCode) })
.OrderBy(m => m.ZipCode)
.ToList();
// Now using LINQ to Objects
members = members.Select(member => new { ZipCode = member.ZipCode.PadLeft(5, '0') })
.OrderBy(m => m.ZipCode)
.ToList(); namespace EFCorePgExercises.Utils
{
public static class SqlDbFunctionsExtensions
{
public static string SqlReplicate(string expression, int count)
=> throw new InvalidOperationException($"{nameof(SqlReplicate)} method cannot be called from the client side.");
private static readonly MethodInfo _sqlReplicateMethodInfo = typeof(SqlDbFunctionsExtensions)
.GetRuntimeMethod(
nameof(SqlDbFunctionsExtensions.SqlReplicate),
new[] { typeof(string), typeof(int) }
);
public static void AddCustomSqlFunctions(this ModelBuilder modelBuilder)
{
modelBuilder.HasDbFunction(_sqlReplicateMethodInfo)
.HasTranslation(args =>
{
return SqlFunctionExpression.Create("REPLICATE",
args,
_sqlReplicateMethodInfo.ReturnType,
typeMapping: null);
});
}
}
} namespace EFCorePgExercises.DataLayer
{
public class ApplicationDbContext : DbContext
{
// ...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// ...
modelBuilder.AddCustomSqlFunctions();
// ...
}
}
} var newMembers = context.Members
.Select(member => new
{
ZipCode =
SqlDbFunctionsExtensions.SqlReplicate(
"0", 5 - Convert.ToString(member.ZipCode).Length)
+ member.ZipCode
})
.OrderBy(m => m.ZipCode)
.ToList();
var members = context.Members
.Select(member => new { Letter = member.Surname.Substring(0, 1) })
.GroupBy(m => m.Letter)
.Select(g => new
{
Letter = g.Key,
Count = g.Count()
})
.OrderBy(r => r.Letter)
.ToList();
select memid, regexp_replace(telephone, '[^0-9]', '', 'g') as telephone from members order by memid;
var members = context.Members
.Select(member => new
{
member.MemId,
Telephone = member.Telephone.Replace("-", "")
.Replace("(", "")
.Replace(")", "")
.Replace(" ", "")
})
.OrderBy(r => r.MemId)
.ToList();