?:LINQ查询中的运算符创建匿名类型时(使用“new”而不指定类型时),您必须为每个属性指定一个成员名称。从你的例子看起来是这样的:(也修复你的连接)varquery=fromaindb.tblActivitiesjoiniindb.tblIPsona.ipidequalsi.idjoinuindb.tblUsersoni.uidequalsu。idselectnew{UserName=(u.UserName??i.Address),Request=a.Request,Date=a.DateTime};您还可以按照自己的方式使用UserName:UserName=(u.UserName==null)?i.Address:u.UserName,但是????运算符更简洁。它类似于SQL中的“isnull”。您必须使用join关键字,并为正确的内部联接定义实体之间的关系。在这里你可以找到一些关于它的例子,我也强烈推荐你使用LinqPad,它是一个非常有价值的测试查询的工具,也非常好学,它有200多个例子。如果您只是检查null,您还可以使用?字符串something=null;字符串somethingElse=something??“默认值”;至于上面的例子,做那些人做的事才是正确的。stringsomething=(somethingElse==null?"Ifitistrue":"ifitisfalse");父母不是必需的,但他们确实有助于阅读。真实的。这个问题取决于你的linq表达式将返回的IQueryable的具体实现。我看到你有db.XXX那么你是在使用linqtosql还是一些linqtodatastore?如果是这样,IQueryable的具体实现需要有一种方法将表达式转换为存储表达式。除了上面的评论,其他一些是正确的,在匿名类型中你必须给每个成员一个名字。这真的是你的错误。我是LinqtoSQL的新手,但我很确定它会是这样的:varquery=fromaindb.tblActivitiesfromiina.tblIPsfromuini.tblUsersselectnew{userName=(u.UserName==null)?i.Address:u.UserName,a.Request,a.DateTime};if语句需要放在圆括号中,结果在圆括号之外。至于连接,您遵循一个->多个链。以上就是C#学习教程:?:LINQ查询中运算符共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击权利联系管理会员删除。如需转载请注明出处:
