如何在LINQ中把查询结果作为一个特定的对象类型返回
对不起,我是Linq和实体框架的新手. linq查询获取整个实体时, 如何将结果作为对象类型返回? 我的意思是不仅是一个字段,还要返回该特定记录的所有字段,作为一个实体. 例如,SQL中的员工表.返回员工对象实体. 如果我写这样的linq代码: var db= (from c in context.Staff where c.id == sId select new { s.sId,s.staffNo,s.name,s.surname,s.image}); return db; ---> here 给出一个错误,因为我想返回结果作为员工对象. 它如何作为表列对象返回? 谢谢 解决方案 根据您的评论,您需要从方法中返回的一个对象. 返回一个您有以下选项的单个项目. First First :从集合中返回第一个项目,如果没有匹配
12 2024-04-26
编程技术问答社区
使用返回的错误信息来确定是否存在错误
我最近与一个伙伴谈论返回值仅具有单一含义.在我以前的工作中,我们与C ++合作,并曾经使用Typedef'Ed wbool,因此0是Wfalse,而1是Wtrue.建筑师说,我们还可以返回2、3、4 ...以获取更多信息,我认为这是一个可怕的主意.如果我们期望wtrue = 1且wfalse = 0并且wbool = {wtrue,wfalse},则应避免返回其他任何内容...现在,到今天的C#. . 我最近审查了一段代码,其中有一系列函数确定是否存在错误,并将字符串返回给用户: private bool IsTestReady(out string errorMessage) { bool isReady = true; errorMessage = string.Empty; if(FailureCondition1) { isReady = false; errorMessage = FailureMessage1; } else
8 2024-04-21
编程技术问答社区
字符串或StringBuilder的返回值?
如果我在方法中使用StringBuilder对象构建字符串,对: 返回StringBuilder对象,然后让调用代码调用ToString()? return sb; 或通过调用tostring()我自己返回字符串. return sb.ToString(); 我想如果我们要返回小或大字符串,这会有所作为.在每种情况下都适合什么?预先感谢. 编辑: 我不打算进一步修改调用代码中的字符串,但好点Colin Burnett. 主要是,返回StringBuilder对象还是字符串更有效?对字符串的引用会返回还是副本? 解决方案 如果要进一步修改字符串,则返回StringBuilder,否则返回字符串.这是一个API问题. 关于效率.由于这是一个含糊不清/一般的问题,没有任何细节,因此我认为可变与不变的问题比性能更重要.可突变性是让您的API返回可修改对象的API问题.弦长与此无关. 也就是说.如果您使用反射器查看stringBuilder
18 2024-04-18
编程技术问答社区
从LINQ查询中返回匿名类型?
在业务逻辑层中,我创建了一个类似的类: public List SelectAllData() { try { return (from obj in Data.roleHasRights join role in Data.roles on obj.FK_roleId equals role.roleId select new { obj, role.roleName }).ToList(); } catch { return null; } } 那么我的返回类型SelectAllData方法是什么? SelectAllData没有将List
6 2024-04-17
编程技术问答社区
关于异步返回类型
想知道为什么我们应该指定async方法确实返回任务对象. 指定async关键字似乎是冗余的,而且它是混乱的,因为您没有真正创建Task对象. 我了解编译器确实会为创建任务对象发出必要的代码(无论是在等待呼叫还是用新任务包装返回.). 我真的不喜欢声明类型和返回类型之间的不一致. 解决方案 i有博客文章详细描述了推理. Inferring the return type 被考虑,但他们决定不这样做. 使用显式返回类型,async关键字更多是实现细节.具有两个明确返回类型的原因有两个: 方法签名是一致的(在声明点是相同的,与使用Intellisense或Reflection观察到时. async void和async Task之间存在差异.使用推断的返回类型,没有明确的方法来定义async void方法. 其他解决方案 这不是一个真正的问题:它更像是一个咆哮,因此并不特别适合堆叠: 我真的不喜欢声明类型和返回类型之间的不一致. 如果
6 2024-04-17
编程技术问答社区
C#方法可以返回一个方法吗?
C#中的方法可以返回方法? 一种方法可以返回一个 lambda expression 我可以将类型参数提供给这种方法,因为一种方法不是Type.这种返回的方法可以分配给某些委托. 以这个概念为例: public QuadraticFunctionMaker(float a , float b , float c) { return (x) => { return a * x * x + b * x + c; }; } delegate float Function(float x); Function QuadraticFunction = QuadraticFunctionMaker(1f,4f,3f); 解决方案 您要寻找的类型是Action或Func. 两种类型上的通用参数确定该方法的类型签名.如果您的方法没有返回值使用Action.如果它具有返回值使用Func,则最后一个通用参数是返回类型. 例
10 2024-04-14
编程技术问答社区
C# 重载返回类型-推荐的方法
我有一种我只希望返回类型的方法与方法过载不同的情况,但是您不能在C#中执行此操作. 处理此问题的最佳方法是什么?我需要这个意味着我的程序结构有缺陷的事实吗? 考虑到C#不可能的事实,建议的方法是什么? 解决方案 通常,您只需给出方法不同的名称. 这样的例子是IDataReader,GetInt32,GetInt64等. 说实话,我相信这通常会表明您要做什么,尤其是当您调用的情况下,结果: : Console.WriteLine(reader.GetInt32()); // This is clear Console.WriteLine(foo.OverloadedGet()); // Which overload of OverloadedGet? 其他解决方案 考虑到C#不可能的事实,建议的方法是什么? 这取决于您为什么需要这个. 最常见的方法是只使用其他名称.该框架在许多情况下都可以做到这一点,例如 convert co
16 2024-04-12
编程技术问答社区
从一个动作方法中返回最具体的类型还是最一般的类型更好?
两者的好处或损害是什么? 解决方案 我的准则一直是最具体的,并且最通用的. 您的数据类型越通用,对数据类型的使用代码就越少.例如,如果一种方法返回集合,我将返回该方法产生的新创建的集合.如果它返回内部数据结构,我会将其撞到IEnumerable. 但是,如果它返回数组或a List,因为这是它内部构建的,那么掌握数据的代码现在可以访问您的集合中的更多功能. 频谱的另一端要返回最通用的数据类型(范围内)数据类型将意味着您始终返回IEnumerable或类似于所有集合,即使该方法内部构建了一个新数组并返回.现在,调用代码必须手动将集合内容的内容复制到新数组或列表中,如果这是调用代码需要使用的内容. 这意味着更多,在大多数情况下,不必要的工作. 对于输入,我可以使用我可以使用的最通用类型,因此,除非我特别需要数组或列表或类似的列表,否则我将接受IEnumerable.通过这样做,我确保呼叫代码的工作要少.这可能意味着我必须在内部进行
12 2024-04-12
编程技术问答社区
C#的数字枚举值为字符串
我有以下枚举: public enum Urgency { VeryHigh = 1, High = 2, Routine = 4 } 我可以以这样的字符串获取枚举" value" 这样: ((int)Urgency.Routine).ToString() // returns "4" 注意:这与: 不同 Urgency.Routine.ToString() // returns "Routine" (int)Urgency.Routine // returns 4 有没有一种方法可以创建一个扩展类别或静态的utliity类,可以提供一些句法糖? :) 解决方案 您应该只能使用枚举的过载toString方法给它一个格式字符串,这将打印出枚举的值为字符串. public static class Program { static void Main(string[] args) {
8 2024-04-11
编程技术问答社区
对于C#函数,是否有一个标准的 "永不返回 "属性?
我有一种看起来像这样的方法: void throwException(string msg) { throw new MyException(msg); } 现在如果我写 int foo(int x, y) { if (y == 0) throwException("Doh!"); else return x/y; } 编译器将抱怨"并非所有路径返回值". 我可以将属性添加到throwException中以避免这种情况吗?类似: [NeverReturns] void throwException(string msg) { throw new MyException(msg); } 恐怕自定义属性不会做,因为出于我的目的,我需要编译器的合作. 解决方案 否.我建议您更改第一个功能的签名,以返回异常而不是丢弃异常,然后将投掷语句留在第二个功能中.这会让编译器快乐,而且闻起来也较少.
6 2024-04-11
编程技术问答社区
返回无效和返回任务之间有什么区别?
在查看各种c#async ctp样本时,我看到了一些返回void的异步函数,还有其他返回非传播Task的函数.我可以看到为什么在异步操作完成时返回Task对于将数据返回给呼叫者很有用,但是我看到的功能具有返回类型的Task> Task永远不会返回任何数据.为什么不返回void? 解决方案 slaks和killercam的答案很好;我以为我会添加更多上下文. 您的第一个问题本质上是关于哪些方法可以标记async. 标记为async的方法可以返回void,Task或Task.它们之间有什么区别? a Task可以等待返回异步方法,当任务完成时,它将提供T. a Task可以期待返回异步方法,当任务完成时,任务的延续已安排运行. a void无法等待返回异步方法;这是一种"火与忘记"方法.它确实不同步,您无法确定何时完成.这有点奇怪.正如Slaks所说,通常您只有在制作异步活动处理程序时才这样做.活动发射,处理程序执行;没有人会
4 2024-04-10
编程技术问答社区
如何使一个方法的返回类型成为通用的?
有没有办法使此方法通用,以便我可以返回string,bool,int或double?现在,它正在返回string,但是如果它能够找到" true"或" false"作为配置值,我想返回bool. public static string ConfigSetting(string settingName) { return ConfigurationManager.AppSettings[settingName]; } 解决方案 您需要将其作为通用方法,例如: public static T ConfigSetting(string settingName) { return /* code to convert the setting to T... */ } 但是呼叫者将必须指定他们期望的类型.然后,您可以使用 Convert.ChangeType ,假设所有相关类型都得到了支持: public static T Config
6 2024-04-10
编程技术问答社区
为什么C#不支持引用的返回?
我读到.NET支持参考的返回,但C#不支持.有特殊原因吗?为什么我不能做这样的事情: static ref int Max(ref int x, ref int y) { if (x > y) return ref x; else return ref y; } 解决方案 这个问题是我的博客2011年6月23日.感谢您的好问题! C#团队正在考虑C#7.请参阅 https://github.com/github.com/dotnet/roslyn/essugy/5233 有关详细信息. 更新:该功能进入C#7! 你是正确的; .NET确实支持返回变量的托管引用的方法. .NET还支持本地变量包含对其他变量的托管引用. (但是,请注意,.NET不支持字段或数组包含对其他变量的托管引用,因为这使垃圾收集故事变得过于复杂.还"托管对变量的托管引用"类型不转换为对象,因此不可用作通用类型或方法的类型参数.) 评论者" RP
12 2024-04-10
编程技术问答社区
在C#中返回匿名类型
我有一个查询,该查询返回匿名类型,并且查询在方法中.您如何写这篇文章: public "TheAnonymousType" TheMethod(SomeParameter) { using (MyDC TheDC = new MyDC()) { var TheQueryFromDB = (.... select new { SomeVariable = ...., AnotherVariable = ....} ).ToList(); return "TheAnonymousType"; } } 解决方案 你不能. 您只能返回object或对象的容器,例如IEnumerable,IList,等等 其他解决方案
12 2024-04-10
编程技术问答社区
为什么getchar()的返回类型是int?
我在Internet上搜索了答案,但我不明白这是什么" EOF"? 请让我从Basic中知道什么是GetChar(),它的用途是什么? 请注意,我只是C语言的初学者. 解决方案 在C中,char和int之间确实没有区别.甚至角色文字,例如'A',几乎普遍晋升为int. ,但 最重要的是EOF是int值.如果char是未签名的(如果签名或未签名,则特定于char),则当将char value -1升级为int时,它变成0x000000ff,这与 value -1是0xffffffff(假设两个正常的补体系统).
16 2024-04-10
编程技术问答社区
为什么main()不需要返回类型(例如int),即使它返回一个intiger?
#include main() { // // return 0; } 我的意思是,即使我没有指定其返回类型,上面的代码也不会显示任何错误. (简单地"主要"而不是" int main"). 解决方案 这是旧式语法(pre-c89),其中函数的默认返回类型为int. afaik现在已经弃用了,因此您应该始终提供返回类型. 其他解决方案 5.1.2.2.1程序启动 在程序启动时调用的函数命名为main.实施声明否 此功能的原型. 它应以int 的返回类型定义,并且没有 参数: int main(void) { /* ... */ } 或两个参数(此处称为argc和argv,尽管任何名称都可能是 使用,因为它们是声明的函数的本地): int main(int argc, char *argv[]) { /* ... */ } 或同等学历; 10)或其他某些实现方式. 编译不返回类型的编译,编译器应发出警告:
4 2024-04-10
编程技术问答社区
在汇编中确定一个函数的返回类型
下面的代码是家庭作业,我了解的实际汇编命令.但是,我不确定(并且一直在寻找)如何确定函数的返回类型以及如果有任何功能(如果采用)多少参数.教授真的没有经过这么井(单调统治公主) 分配是读取汇编代码,然后在汇编代码上编写C代码基础.我再次理解说明,只是无法弄清楚返回类型是什么或代码采用多少参数 .file "hw5.c" .text .p2align 4,,15 .globl p1 .type p1, @function p1: .LFB0: .cfi_startproc addq %rsi, %rdi addq %rdi, %rdx movq %rdx, %rax ret .cfi_endproc 解决方案 您应该查看处理器/平台以了解低级别实现的呼叫约定. 在调用子例程之前,呼叫者应保存指定为呼叫者的某些寄存器的内容.呼叫者保存的寄存器是EAX,ECX,EDX [
14 2024-04-08
编程技术问答社区
为什么 C 函数不能返回数组类型?
我是C语言的新手,想知道: 为什么C函数不能返回数组类型? 我知道数组名称是数组第一个值的地址,并且数组是C中的二等公民. 解决方案 您已经自己回答了问题:数组是二等公民. c按值返回.阵列不能按值通过,因此不能返回. 为什么不能按价值传递数组:这是K&R首次设计语言时做出的设计决定,现在更改它为时已晚,因为所有现有的C代码都会破坏. 其他解决方案 基于 c语言的发展,看来真正的原因主要与C从B和BCPL的演变有关. b没有数组变量,它只是指针.它也没有结构.当将结构添加到C中,并且允许它们包含数组成员时,他需要一种方法来处理这些封闭的阵列,类似于处理B风格的阵列的处理方式,并且解决方案是将数组转换为指针,每当它们'在表达式中使用.这是解释此内容的部分. 当我试图扩展类型符号时,问题变得显而易见,尤其是 添加结构化(记录)类型.似乎应该以直观的方式映射到内存的结构 在机器中,但是在包含数组的结构中,没有一个很好的位置可以藏起来指针 包含阵列的
10 2024-04-08
编程技术问答社区
将 C 函数的返回类型设为 const 有哪些用途?
我需要知道程序员通过将函数返回类型作为" const"中的" const"合格所具有的优势.此问题与C ++无关. 以下功能签名是有效的C函数签名,因此创建者允许它牢记某些用例,我在网络中找不到任何地方. const int foo(int arg); 我知道在C ++中,它有很多用途可以使返回的对象不可变或仅阅读,因为返回的对象可能会有意外作业. 解决方案 const对于返回值没有任何意义,因为在任何情况下,返回值是 rvalues ,无法修改. src . 一个例外:const T*可以有用,因为它提到指向指向的对象是恒定的,并且该函数的用户应尊重. 其他解决方案 考虑以下情况: const char* F() { return " aaaaaaaaa. Ddddd"; }
6 2024-04-07
编程技术问答社区
'main'函数的返回值去哪里了?
在c中,函数始终将其值返回到调用功能,而永远不会返回(如果返回类型不是无效).喜欢, int main() 但是,由于' main '函数是由操作系统调用 而不是函数的.那么,"主"功能返回其价值?该值在何时返回时,使用expression 返回 return(0); 在程序结束时? 解决方案 这是完全特定于OS的,但通常OS通过 调用程序 设置程序的地址空间, 在OS内部设置中某处创建新过程的记录, 启动自己的自定义功能,该功能调用main并将返回值存储在OS内部. 我在(3)中指的功能通常是一个好老式的C函数,它可以跳入main,因此它可以从main中捕获返回值,就好像它是普通的C函数(它实际上是).之后,它将该值存储在OS-Land的某个位置,因此需要读取返回值的过程可以做到. 希望这会有所帮助! 其他解决方案 如前所述,这是特定于操作系统的.在Unix系统中,它看起来像这样: 使用GCC编译程序时,它会围绕您的main(
24 2024-04-07
编程技术问答社区