IcanuseC#stringinterpolationinLinqtoSQL使用EF时(至少到6.1.3版本),假设你有这样的类:classCustomer{publicstringFirstName{get;放;}publicstringLastName{get;放;如果你想得到一个FullName字段,它是两个(FirstName和LastName)的串联作为查询结果中的一个字段,你必须执行以下操作:db.Customers.Select(c=>new{FullName=c.FirstName+""+c.LastName})现在C#中有字符串插值,你可以做类似这个db的事情。Customers.Select(c=>new{FullName=$"{c.FirstName}{c.LastName}"})这看起来像是一个微不足道的例子(确实如此),但问题仍然存在。我可以开箱即用吗,是否需要一些技巧才能让它工作或确保它不工作?我不想这样,不。它将编译成一个string.Format调用,我不想得到支持。如果你真的需要在SQL部分做投影,你可以测试它......但是,通常,当你完成需要在数据库中执行的查询部分时,使用AsEnumerable(),并且然后在之后使用Select:varquery=db.Customers//仅投影到我们需要的属性.Select(c=>new{c.FirstName,c.LastName})//在进程中执行查询的其余部分.AsEnumerable().Select(c=>$"{c.FirstName}{c.LastName}");你能做这个吗?一般意义上不是,因为字符串插值只是转换为string.Format调用,用数字替换占位符并将值作为参数传递。所以你的格式将被翻译$"{c.FirstName}{c.LastName}"到string.Format("{0}{1}",c.FirstName,c.LastName);由于它不是string.Format()(自定义格式字符串、填充、对齐等)可直接转换为SQL,因此不受支持。我是否需要想出一些技巧来让它工作或确保它不工作?我怀疑你有什么技巧可以让它在Ling-to-SQL中工作,因为你在内部处理string.Format。您可以检索所需的所有部分,调用AsEnumerable将上下文从Linq-to更改为Linq-to-Objects,然后在后续投影上使用插值,但在这种简单的情况下,使用字符串连接更简洁。以上就是C#学习教程:我会在LinqtoSQL中使用C#字符串插值的全部内容分享给大家。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
