草庐IT

yield_per

全部标签

c# - Entity Framework 4 仅代码错误 "Multiple objects sets per type are not supported"

我有两个使用EF4和最新CTP的“纯代码”POCO,针对现有的遗留数据库运行。对PocoA运行LINQ查询一直有效,直到我将下面的属性添加到该对象,我试图添加一个关系。publicvirtualPocoBpocoB{get;set;}一旦我这样做了,我就开始收到以下错误:不支持每种类型的多个对象集。对象集“PocoA_DbSet”和“PocoB_DbSet”都可以包含“PocoA”类型的实例。所以我接下来认为我的问题是因为我没有定义关系,并且这个遗留数据库在主键和外键上使用“fk/pk”前缀而不是“Id”后缀。所以我在上面指定的虚拟方法中添加了以下数据注释,行为没有变化:[Relate

c# - 能够重置使用 yield (C#) 生成的 IEnumerator

如果我使用yield而不是手动创建IEnumerator,是否可以实现IEnumerator.Reset? 最佳答案 不,这是不可能的。当C#编译器处理迭代器(一种包含yield语句的方法)时,编译器会生成一个实现IEnumerable和IEnumerator的类。生成类的Reset实现仅抛出NotSupportedException。在当前版本的C#中无法影响这一点。相反,您的调用代码将需要请求一个新的枚举器,即开始一个新的foreach循环。或者您将需要放弃语言支持(yield语句)并编写您自己的实现IEnumerator的类。

c# - 如何使 `await …` 与 `yield return` 一起工作(即在迭代器方法中)?

我的现有代码看起来类似于:IEnumerableGetStuff(){using(SqlConnectionconn=newSqlConnection(connectionString))using(SqlCommandcmd=newSqlCommand(sql,conn){conn.Open();SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){SomeClasssomeClass=f(reader);//createinstancebasedonreturnedrowyieldreturnsomeClass;}

c# - 什么是 yield,在 asp .NET 中使用 yield 有什么好处?

你能帮我理解asp.NET(C#)中的yield关键字吗? 最佳答案 yield返回会自动为您创建一个枚举器。http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx所以你可以做类似的事情//pseudocode:while(get_next_record_from_database){yieldreturnyour_next_record;}它允许您快速创建一个对象集合(枚举器),您可以循环遍历并检索记录。yieldreturn语句处理为您创建枚举器所需的所有代码。yieldret

c# - yield return 相对于返回列表的并发或性能优势

我想知道使用yieldreturn比返回列表是否有任何并发​​性(现在或将来)或性能优势。看下面的例子处理方法voidPage_Load(){foreach(variteminGetPostedItems())Process(item);}使用yieldIEnumerableGetPostedItems(){yieldreturnItem1.Text;yieldreturnItem2.Text;yieldreturnItem3.Text;}返回列表IEnumerableGetPostedItems(){varlist=newList();list.Add(Item1.Text);lis

c# - 在 "using"语句中使用 yield 时,Dispose 何时发生?

我有一个关于延迟执行和数据处理的问题。考虑以下示例:privateIEnumerableParseFile(stringfileName){using(StreamReadersr=newStreamReader(fileName)){stringline;while((line=sr.ReadLine())!=null){yieldreturnline;}}}privatevoidLineReader(stringfileName){intcounter=0;foreach(stringlineinParseFile(fileName)){if(counter==2){break;/

c# - yield 返回与返回选择

这两种方法的优点/缺点是什么?returnitems.Select(item=>DoSomething(item));对比foreach(variteminitems){yieldreturnDoSomething(item);}编辑由于它们大致等同于MSIL,您认为哪个更具可读性? 最佳答案 yieldreturn技术导致C#编译器“在幕后”生成一个枚举器类,而Select调用使用一个标准的枚举器类,该枚举器参数化了一个委托(delegate)。在实践中,除了在Select情况下为委托(delegate)可能有一个额外的调用框架外

c# - yield 在 lock 语句中返回

如果我在lock语句中有一个yieldreturn,是在每次yield时(在下面的示例中是5次)还是只对列表中的所有项目解除一次锁?谢谢privateList_data=newList(){"1","2","3","4","5"};privateobject_locker=newobject();publicIEnumerableGetData(){lock(_locker){foreach(stringsin_data){yieldreturns;}}} 最佳答案 2022年10月更新时隔多年再看这个回答,觉得原语气太刺耳了,觉得

c# - 在 C# 中使用 yield

我对c#中的yield关键字有一个模糊的理解,但我还没有看到需要在我的代码中使用它。这可能是因为对它缺乏了解。那么,yield有哪些典型的良好用法? 最佳答案 yield只是使实现枚举器变得非常简单。所以如果你想写一个返回IEnumerable的方法它使您不必创建枚举器类-您只需yield一次一个结果,编译器会处理隐藏的细节。一个方便的例子是编写一个“无限枚举器”,调用者可以根据需要多次调用它。这是一个生成无限斐波那契数列的示例:http://chrisfulstow.com/fibonacci-numbers-iterator-w

c# - 使用 Table Per Hierarchy 继承在 LINQ to Entities 查询中转换为派生类型

我有一个LINQtoentities模型,它具有TablePerHierarchy继承。我对基类型有一个查询,我想做特定的类型相关逻辑。例如:IQueryablebase=...//thisworksfinevarresult=base.Select(b=>bisDerivedType1?1:2).ToList();//thisdoesn'tcompiletoSQLvarresult2=base.Select(b=>bisDerivedType1?((DerivedType1)b).DerivedProperty:null).ToList();有没有办法在不单独处理每个派生类型的IQu