将DefaultIfEmpty与对象一起使用?
我在MSDN上看到了一个示例,如果没有返回任何内容,它将允许您指定默认值。 见下文:
List months = new List { }; int firstMonth2 = months.DefaultIfEmpty(1).First();
是否可以将此function与对象一起使用? 例:
class object { int id; string name; }
码:
List objs = new List {}; string defaultName = objs.DefaultIfEmpty(/*something to define object in here*/).name;
更新:
我以为我可以这样做:
List objs = new List {}; string defaultName = objs.DefaultIfEmpty(new myObjec(-1,"test")).name;
但一直没能。 应该注意的是,我实际上是尝试使用LINQ-To-SQL在我的DBML中定义的对象上使用此方法。 不确定这是否会对这种情况产生影响。
您需要将实例化的类作为DefaultIfEmpty
的参数传递。
class Program { static void Main(string[] args) { var lTest = new List(); var s = lTest.DefaultIfEmpty(new Test() { i = 1, name = "testing" }).First().name; Console.WriteLine(s); Console.ReadLine(); } } public class Test { public int i { get; set; } public string name { get; set; } }
要添加它并使它更优雅(IMO)添加一个默认构造函数:
class Program { static void Main(string[] args) { var lTest = new List(); var s = lTest.DefaultIfEmpty(new Test()).First().name; Console.WriteLine(s); Console.ReadLine(); } } public class Test { public int i { get; set; } public string name { get; set; } public Test() { i = 2; name = "testing2"; } }
根据此扩展方法的MSDN页面,您可以执行您想要的操作:
http://msdn.microsoft.com/en-us/library/bb355419.aspx
请查看此页面上的示例,以获取有关如何将其与对象一起使用的示例。
我必须承认我不太清楚我理解你的问题,但如果返回的对象可能为null,我会尝试建议使用双问号。 像这样:
myList.FirstOrDefault() ?? new myObject();
您可以像这样创建一个默认对象:
Object o_Obj_Default = new Object(); o_Obj_Default.id = 3; o_Obj_Default.name = "C";
并将其添加到您的默认值:
string defaultName = objs.DefaultIfEmpty(o_Obj_Default).First().name;
如果您的列表“objs”为空,则结果为“C”