此代码区分大小写,如何使其不区分大小写?
public IQueryable<FACILITY_ITEM> GetFacilityItemRootByDescription(string description)
{
return this.ObjectContext.FACILITY_ITEM.Where(fi => fi.DESCRIPTION.Contains(description));
}
Run Code Online (Sandbox Code Playgroud) 我有一串这样的文字:
var foo = "FooBar";
Run Code Online (Sandbox Code Playgroud)
我想声明第二个字符串,bar
并使其等于我的第一个和第四个字符foo
,所以我这样做:
var bar = foo[0].ToString() + foo[3].ToString();
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作,但ReSharper建议我把它Culture.InvariantCulture
放在我的括号内,所以这一行最终如下:
var bar = foo[0].ToString(CultureInfo.InvariantCulture)
+ foo[3].ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
这是什么意思,它会影响我的程序运行方式吗?
这段代码:
string a = "abc";
string b = "AC";
Console.WriteLine("Length a = {0}", a.Length);
Console.WriteLine("Length b = {0}", b.Length);
Run Code Online (Sandbox Code Playgroud)
输出:
Length a = 3
Length b = 4
Run Code Online (Sandbox Code Playgroud)
为什么?我唯一能想到的是中文字符长度为2个字节,并且该.Length
方法返回字节数.
对于以下代码块:
For I = 0 To listOfStrings.Count - 1
If myString.Contains(lstOfStrings.Item(I)) Then
Return True
End If
Next
Return False
Run Code Online (Sandbox Code Playgroud)
输出是:
情况1:
myString: C:\Files\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: True
Run Code Online (Sandbox Code Playgroud)
案例2:
myString: C:\Files3\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: False
Run Code Online (Sandbox Code Playgroud)
列表(listOfStrings)可能包含多个项目(最少20个),并且必须根据数千个字符串(如myString)进行检查.
是否有更好(更有效)的方法来编写此代码?
我尝试了本文中所写的所有内容:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api,但没有任何作用.我正在尝试从webAPI2(MVC5)获取数据以使用angularJS在另一个域中使用.
我的控制器看起来像这样:
namespace tapuzWebAPI.Controllers
{
[EnableCors(origins: "http://local.tapuz.co.il", headers: "*", methods: "*", SupportsCredentials = true)]
[RoutePrefix("api/homepage")]
public class HomePageController : ApiController
{
[HttpGet]
[Route("GetMainItems")]
//[ResponseType(typeof(Product))]
public List<usp_MobileSelectTopSecondaryItemsByCategoryResult> GetMainItems()
{
HomePageDALcs dal = new HomePageDALcs();
//Three product added to display the data
//HomePagePromotedItems.Value.Add(new HomePagePromotedItem.Value.FirstOrDefault((p) => p.ID == id));
List<usp_MobileSelectTopSecondaryItemsByCategoryResult> items = dal.MobileSelectTopSecondaryItemsByCategory(3, 5);
return items;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在用C#构建一些SQL查询.它将根据代码中存储为变量的某些条件而有所不同.
string Query="SELECT * FROM Table1 WHERE 1=1 ";
if (condition1)
Query += "AND Col1=0 ";
if (condition2)
Query += "AND Col2=1 ";
if (condition3)
Query += "AND Col3=2 ";
Run Code Online (Sandbox Code Playgroud)
它有效,但测试1 = 1似乎并不优雅.如果我没有使用它,我必须记住并检查每次是否已经添加"where"关键字到查询.
有更好的解决方案吗?
我想要一个不涉及ToUpper或ToLower的问题的解决方案,正如我在下面的代码中使用的那样;
var upper = term.ToUpper();
using (var db = this.DataContext)
{
return db.Counties.Where(x => x.CountyName.ToUpper().Contains(upper)).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用有权使用的框架,因此使用的C#解决方案StringComparison.CurrentCultureIgnoreCase
不起作用.它的工作Equals
,EndsWith
和StartsWith
,但不是Contains
.
可能重复:
不区分大小写包含(字符串)
使用Contains()
String类的方法,可以找到子字符串.如何以不区分大小写的方式在字符串中查找子字符串?
该空传播运营商/条件接入表达在未来的C#-6.0看起来像一个非常方便的功能.但我很好奇它是否有助于解决检查子成员是否为null然后在if块内的所述子成员上调用布尔方法的问题:
public class Container<int>{
IEnumerable<int> Objects {get;set;}
}
public Container BuildContainer()
{
var c = new Container();
if (/* Some Random Condition */)
c.Objects = new List<int>{1,2,4};
}
public void Test()
{
var c = BuildContainer();
//Old way
if ( null != c && null != c.Objects && c.Objects.Any())
Console.Write("Container has items!");
//C# 6 way?
if (c?.Object?.Any())
Console.Write("Container has items!");
}
Run Code Online (Sandbox Code Playgroud)
会c?.Object?.Any()
编译吗?如果传播运算符短路(我认为这是正确的术语)为null,那么你有if (null)
,这是无效的.
C#团队是否会解决这个问题,或者我是否错过了null传播运算符的预期用例?