我知道一般空列表比NULL更喜欢.但我将返回NULL,主要有两个原因
??之后很容易执行操作以获得返回值.对于字符串,我们有IsNullOrEmpty.有没有C#本身为List或IEnumerable做同样的事情?
该空传播运营商/条件接入表达在未来的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传播运算符的预期用例?
如果我定义一个整数数组:
int[] a = new int[13];
Run Code Online (Sandbox Code Playgroud)
并且我没有向其中插入任何项目,我如何知道数组 a 是否包含任何项目或完全为空?我是否必须迭代所有 a.Length 索引?在列表中
List<int> b = new List<int>();
Run Code Online (Sandbox Code Playgroud)
如果我检查:
if(b.Count == 0)
{
// The list does not contain any items.
}
Run Code Online (Sandbox Code Playgroud)
有没有等效的方法来检查数组?我在互联网上发现检查数组是否为空或空。就我而言,我确信该数组不为空。我只是想知道它是否包含任何项目。我不关心数组中的哪个位置,也不关心具体是哪个项目。预先非常感谢您。
任何想法在EF DbContext查询中可能出现什么问题?据我了解,这应该按照SO的同伴来进行。
我试过列表,空值检查,不是空值检查,但没有用。但是,如果我删除了null检查并仅保留,则查询确实起作用Contains()。但是,如果testID为null,则必须返回所有记录。
var testIDs = new int[] { 1, 3 };
var test = session.All<VendorBooking>(x => testIDs == null || testIDs.Contains(x.VendorServiceID)).ToList();
Run Code Online (Sandbox Code Playgroud)
(session.All只是利用context.Set<T>.Where())
引发异常:EntityFramework.SqlServer.dll中的“ System.NotSupportedException”
附加信息:无法比较'System.Int32 []'类型的元素。仅支持原始类型,枚举类型和实体类型。
非常感谢