对于想了解如何在efcore2中包含不区分大小写的内容?的读者,本文将提供新的信息,我们将详细介绍efcoredbfirst,并且为您提供关于C#WinForm登录界面的图片验证码(区分大小写+不区分
对于想了解如何在ef core 2中包含不区分大小写的内容?的读者,本文将提供新的信息,我们将详细介绍ef core dbfirst,并且为您提供关于C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)、java – 不区分大小写的排序集 – 保持不同大小写的相同字符串、java – 如何在Oracle 10gR2和JPA中做一个不区分大小写和不区分大小写的操作?、java – 获取文件区分大小写的名称,不区分大小写拼写的有价值信息。
本文目录一览:- 如何在ef core 2中包含不区分大小写的内容?(ef core dbfirst)
- C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)
- java – 不区分大小写的排序集 – 保持不同大小写的相同字符串
- java – 如何在Oracle 10gR2和JPA中做一个不区分大小写和不区分大小写的操作?
- java – 获取文件区分大小写的名称,不区分大小写拼写
如何在ef core 2中包含不区分大小写的内容?(ef core dbfirst)
我正在尝试通过搜索字符串过滤列表。它在文档的蓝色注释上说:
- IQueryable为您提供的数据库提供程序实现
Contains
。 IEnumerable
为您提供.NET Framework的实现Contains
- SQL Server实例的默认设置不区分大小写。
ToUpper
应该避免使用它来进行不区分大小写的显式调用,因为这会降低性能。
我的过滤如下:
IQueryable<ApplicationUser> customers = from u in _context.Users where (u.Customer != null && u.IsActive) select u;if (!string.IsNullOrEmpty(searchString)){ customers = customers.Where(s => s.Email.Contains(searchString));}
但是,该解决方案区分大小写,我也不十分清楚为什么:因为我正在使用IQueryable
,所以它应该使用数据库提供程序实现,默认情况下不区分大小写,对吗?
我正在使用EF Core 2,当前仅运行本地MSSQLLocalDB。
答案1
小编典典从EF Core 2.1版开始,您可以使用HasConversion()。但是数据库中的信息将以小写形式存储:
builder.Property(it => it.Email).HasConversion(v => v.ToLowerInvariant(), v => v);
我解决了类似的问题。这项更改解决了我所有的问题。
C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)
一、功能界面

图1 验证码(区分大小写)
二、创建一个产生验证码的类Class1
(1)生成随机验证码字符串,用的是Random随机函数
(2)创建验证码图片,将该字符串画在PictureBox控件中
Class1.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing;//图片 using System.Windows.Forms; namespace ValidCodeTest { public class Class1 { #region 验证码功能 /// <summary> /// 生成随机验证码字符串 /// </summary> public static string CreateRandomCode(int CodeLength) { int rand; char code; string randomCode = String.Empty;//随机验证码 //生成一定长度的随机验证码 //Random random = new Random();//生成随机数对象 for (int i = 0; i < CodeLength; i++) { //利用GUID生成6位随机数 byte[] buffer = Guid.NewGuid().ToByteArray();//生成字节数组 int seed = BitConverter.ToInt32(buffer, 0);//利用BitConvert方法把字节数组转换为整数 Random random = new Random(seed);//以生成的整数作为随机种子 rand = random.Next(); //rand = random.Next(); if (rand % 3 == 1) { code = (char)(''A'' + (char)(rand % 26)); } else if (rand % 3 == 2) { code = (char)(''a'' + (char)(rand % 26)); } else { code = (char)(''0'' + (char)(rand % 10)); } randomCode += code.ToString(); } return randomCode; } /// <summary> /// 创建验证码图片 /// </summary> public static void CreateImage(string strValidCode, PictureBox pbox) { try { int RandAngle = 45;//随机转动角度 int MapWidth = (int)(strValidCode.Length * 21); Bitmap map = new Bitmap(MapWidth, 28);//验证码图片—长和宽 //创建绘图对象Graphics Graphics graph = Graphics.FromImage(map); graph.Clear(Color.AliceBlue);//清除绘画面,填充背景色 graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框 graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式 Random rand = new Random(); //背景噪点生成 Pen blackPen = new Pen(Color.LightGray, 0); for (int i = 0; i < 50; i++) { int x = rand.Next(0, map.Width); int y = rand.Next(0, map.Height); graph.DrawRectangle(blackPen, x, y, 1, 1); } //验证码旋转,防止机器识别 char[] chars = strValidCode.ToCharArray();//拆散字符串成单字符数组 //文字居中 StringFormat format = new StringFormat(StringFormatFlags.NoClip); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; //定义颜色 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //定义字体 string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; for (int i = 0; i < chars.Length; i++) { int cindex = rand.Next(7); int findex = rand.Next(5); Font f = new System.Drawing.Font(font[findex], 13, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小) Brush b = new System.Drawing.SolidBrush(c[cindex]); Point dot = new Point(16, 16); float angle = rand.Next(-RandAngle, RandAngle);//转动的度数 graph.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置 graph.RotateTransform(angle); graph.DrawString(chars[i].ToString(), f, b, 1, 1, format); graph.RotateTransform(-angle);//转回去 graph.TranslateTransform(2, -dot.Y);//移动光标到指定位置 } pbox.Image = map; } catch (ArgumentException) { MessageBox.Show("验证码图片创建错误"); } } #endregion } }
三、调用
(1)更新验证码
(2)验证(区分大小写)
(3)验证(不区分大小写)
Form1.cs:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ValidCodeTest; namespace ValidCode { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region 验证码 private const int ValidCodeLength = 4;//验证码长度 private String strValidCode = "";//验证码 //调用自定义函数,更新验证码 private void UpdateValidCode() { strValidCode = Class1.CreateRandomCode(ValidCodeLength);//生成随机验证码 if (strValidCode == "") return; Class1.CreateImage(strValidCode, pbox1);//创建验证码图片 } #endregion private void pbox1_Click(object sender, EventArgs e) { UpdateValidCode();//点击更新验证码 } private void Form1_Load(object sender, EventArgs e) { UpdateValidCode();//加载更新验证码 } /// <summary> /// 验证(区分大小写) /// </summary> private void btn1_Click(object sender, EventArgs e) { string validcode = txtValidCode.Text.Trim(); char[] ch1 = validcode.ToCharArray(); char[] ch2 = strValidCode.ToCharArray(); int Count1 = 0;//字母个数 int Count2 = 0;//数字个数 if (String.IsNullOrEmpty(validcode) != true)//验证码不为空 { for (int i = 0; i < strValidCode.Length; i++) { if ((ch1[i] >= ''a'' && ch1[i] <= ''z'') || (ch1[i] >= ''A'' && ch1[i] <= ''Z''))//字母 { if (ch1[i] == ch2[i]) { Count1++; } } else//数字 { if (ch1[i] == ch2[i]) { Count2++; } } } int CountSum = Count1 + Count2; if (CountSum == strValidCode.Length) { MessageBox.Show("验证通过", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); UpdateValidCode(); txtValidCode.Text = ""; txtValidCode.Focus(); } else { MessageBox.Show("验证失败", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); UpdateValidCode();//更新验证码 txtValidCode.Text = ""; txtValidCode.Focus(); } } else//验证码为空 { MessageBox.Show("请输入验证码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); UpdateValidCode();//更新验证码 txtValidCode.Text = ""; txtValidCode.Focus(); } } /// <summary> /// 验证(不区分大小写) /// </summary> private void btn2_Click(object sender, EventArgs e) { string validcode = txtValidCode.Text.Trim(); if (String.IsNullOrEmpty(validcode) != true)//验证码不为空 { if (validcode.ToLower() == strValidCode.ToLower()) { MessageBox.Show("验证通过", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); UpdateValidCode(); txtValidCode.Text = ""; txtValidCode.Focus(); } else { MessageBox.Show("验证失败", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); UpdateValidCode();//更新验证码 txtValidCode.Text = ""; txtValidCode.Focus(); } } else//验证码为空 { MessageBox.Show("请输入验证码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); UpdateValidCode();//更新验证码 txtValidCode.Text = ""; txtValidCode.Focus(); } } } }
.exe测试文件下载: ValidCode_jb51.zip
参考文章:
https://www.jianshu.com/p/d89f22cf51bf
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
- C# winform主界面打开并关闭登录界面的方法
- C# WinForm制作登录界面的实现步骤
java – 不区分大小写的排序集 – 保持不同大小写的相同字符串
Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); set.add("foo"); set.add("FOO"); set.add("bar"); System.out.println(set.toString());
这个输出是:
[bar,foo]
但我真正想要的是:
[bar,FOO,foo]
也就是说,我希望对集合的排序不区分大小写,但我希望能够在集合中使用具有不同情况的相同字符串(如“foo”和“FOO”),而不丢弃最后一个.
我知道我可以对List进行排序,但在我的情况下我需要一个Set.
在Java中有这样一种巧妙的方法吗?
解决方法
所以类似于:
Set<String> set = new TreeSet<>((a,b) -> { int insensitive = String.CASE_INSENSITIVE_ORDER.compare(a,b); return insensitive==0 ? a.compareto(b) : insensitive; });
java – 如何在Oracle 10gR2和JPA中做一个不区分大小写和不区分大小写的操作?
我知道更改会话变量NLS_COMP和NLS_SORT,但我想知道在查询本身是否有另一个窍门,而不改变会话变量
解决方法
select upper(convert('This is a têst','US7ASCII')),upper(convert('THIS is A test','US7ASCII')) from dual; select 1 from dual where upper(convert('This is a têst','US7ASCII')) = upper(convert('THIS is A test','US7ASCII'))
CONVERT将重音字符减少到映射的ASCII等价物,而UPPER将小写字母强制为大写.所得到的字符串应该是匹配的.
java – 获取文件区分大小写的名称,不区分大小写拼写
FilePicker.PickFile(文件名)
其中filename是一个字符串.
在该方法中,它将转换为:
文件文件=新文件(文件名);
这并没有错.接下来,我做,
if(file.exists()){ System.out.println(file.getName()); } else{ System.out.println("Fail."); }
这就是问题的开始.我想得到文件的名称,比如说“HELLO.txt”,但如果filename是“hello.txt”,它仍会传递file.exists()检查,而file.getName()则返回“hello.txt”,“不是”HELLO.txt“.有没有办法,将file.getName()作为区分大小写的版本返回为“HELLO.txt?”谢谢!
一个例子:
HELLO.txt是真实的文件
FilePicker.PickFile( “hello.txt的”);
OUTPUT:
hello.txt的
解决方法
file.getCanonicalFile()
.getName()来获取所选文件的规范名称.
当您使用Linux或Android并且想要根据不一定匹配大小写的文件名选择文件时,遍历文件目录(file.getParent())中的所有文件,并选择.equalsIgnoreCase文件名.或者见Case-insensitive File.equals on case-sensitive file system
我们今天的关于如何在ef core 2中包含不区分大小写的内容?和ef core dbfirst的分享就到这里,谢谢您的阅读,如果想了解更多关于C# WinForm 登录界面的图片验证码(区分大小写+不区分大小写)、java – 不区分大小写的排序集 – 保持不同大小写的相同字符串、java – 如何在Oracle 10gR2和JPA中做一个不区分大小写和不区分大小写的操作?、java – 获取文件区分大小写的名称,不区分大小写拼写的相关信息,可以在本站进行搜索。
本文标签: