Linq的内部变量如何赋值给外部变量?

问题描述

varsupplierDataList=supplierList.Select(supplier=>new{supplierName=supplier,supplyData=new{price=fromquoteDateinquoteDateListjoinmodelinmodelList.Where(model=>model.MB_Supplier==supplier)//依赖supplieronquoteDateequalsmodel.MB_QuoteDateintoresultListfromresultinresultList.DefaultIfEmpty(newMI_MaterialBase())selectresult.aaaval=fromquoteDateinquoteDateListjoinmodelinmodelList.Where(model=>model.MB_Supplier==supplier)//依赖supplieronquoteDateequalsmodel.MB_QuoteDateintoresultListfromresultinresultList.DefaultIfEmpty(newMI_MaterialBase())selectresult.bbb}});问题:如果按上面这样写,重复代码太多。想把Select每项产生的resultList存到外部变量,实现类似下面的效果,请问该如何实现?伪代码:varsupplierDataList=supplierList.Select(supplier=>new{supplierName=supplier,supplyData=new{price=fromquoteDateinquoteDateListjoinmodelinmodelList.Where(model=>model.MB_Supplier==supplier)//依赖supplieronquoteDateequalsmodel.MB_QuoteDateintoresultListfromresultinresultList.DefaultIfEmpty(newMI_MaterialBase())selectresult.aaavartempList=resultList;val=fromresultintempList.DefaultIfEmpty(newMI_MaterialBase())selectresult.bbb}});

解决方案

解决方案二:
求大神分享思路啊~
解决方案三:
在linq中刻意使用let语句。例如int[]datas=newint[]{1,2,3,4,7,8,9};varquery=fromxindataslety=fromuindataswhereu>=x+xselectxletcnt=y.Count()selectnew{lst=y,avg=y.Average(),sum=y.Sum(),length=cnt};

解决方案四:
刻意-->可以int[]datas=newint[]{1,2,3,4,7,8,9};varquery=fromxindataslety=fromuindataswhereu>=x+xselectuletcnt=y.Count()selectnew{lst=y,avg=y.Average(),sum=y.Sum(),length=cnt};

let就相当于var,用在linq之中,而不是之外。可以在linq外定义变量并用在linq中使用。但是不要轻易使用超过作用域的变量,应该优先使用let。
解决方案五:
引用3楼sp1234的回复:

刻意-->可以int[]datas=newint[]{1,2,3,4,7,8,9};varquery=fromxindataslety=fromuindataswhereu>=x+xselectuletcnt=y.Count()selectnew{lst=y,avg=y.Average(),sum=y.Sum(),length=cnt};

let就相当于var,用在linq之中,而不是之外。可以在linq外定义变量并用在linq中使用。但是不要轻易使用超过作用域的变量,应该优先使用let。

lety这样只在varquery的作用域才有用,在其它的变量中,例如varvalue中,想要复用之前的lety,就无力了...
解决方案六:
瞅了这么久,也捣鼓了半天,还是说下我的思路吧。这种方式还是有缺陷,有没有大神给出更加优雅的解决方法?List<MI_MaterialBase>tempList;varsupplierDataList=supplierList.Select(supplier=>new{supplierName=supplier,supplyData=new{price=(fromquoteDateinquoteDateListjoinmodelinmodelList.Where(model=>model.MB_Supplier==supplier)//依赖supplieronquoteDateequalsmodel.MB_QuoteDateintoresultListfromresultinresultList.DefaultIfEmpty(newMI_MaterialBase())selectresult).Select((item,i)=>{if(i==0)//这样判断有个缺陷,无法知道是否到了最后一项,有没有解决办法?{tempList.Clear();}tempList.Add(item);returnt.aaa;}),}),val=tempList.Select(t=>{returnt.bbb;})}});

时间: 2024-09-17 04:45:42

Linq的内部变量如何赋值给外部变量?的相关文章

如何把ajax返回的responseText赋值给外部变量

问题描述 function setHtml(){ var html = ""; $.getJSON("ajax!getList",function(data){ html = data.section; alert(html);//这里就能取到html,但是外部html变量没有改变 }); alert(html);//这里答应就是空字符串}请问有没有什么方法把$.getJSON("ajax!getList",function(data){});内

JS变量如何赋值给JAVA变量

问题描述 var_class_id=document.getElementById("query_studentid");//query_studentid是个input标签的ID<%Stringaa%>=_class_id.value;/这里报错,说无法将void类型转换为string类型<%----//下面会用到AA------%>其实就是想获取本页面一个INPUT标签的内容,在JAVA段中处理 解决方案 解决方案二:你用表单提交到class里面处理可以啊解

JavaScript闭包函数访问外部变量的方法_javascript技巧

闭包是指有权访问另一个函数作用域中的变量的函数,但作用域的配置机制有一个需要注意的地方,即闭包只能取得包含函数中任何变量的最后一个值. 如以下案例: function create(){     var arr = new Array();        for (var i=0; i<10; i++){         arr[i] = function(){             return i;         };      }       return arr; }   var c

C程序中外部变量与函数关系解惑

C程序由一组对象组成,这些对象包括程序中所使用的变量和实现特定功能的函数.变量可以分为函数内部定义.使用的变量和函数外部定义的变量,通常情况下,把函数内部定义.使用的变量称为内部变量或局部变量,而将在函数外部定义的.供许多函数所使用的变量称为外部变量,一般情况下,也可以称为全局变量. 由于C语言不允许在一个函数中定义其他函数,因此函数本身是外部的.一般情况下,也可以说函数是全局函数. 在缺省情况下,外部变量与函数具有如下性质:所有通过名字对外部变量与函数的引用(即使这种引用来自独立编译的函数)都

PHP闭包函数传参及使用外部变量的方法_php技巧

本文实例讲述了PHP闭包函数传参及使用外部变量的方法.分享给大家供大家参考,具体如下: 在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量,及闭包函数的传参.如下: //测试闭包传参及use使用外部变量 public function testClosure($t1, $t2) { $closure = function ($param1, $param2) use ($t1, $t2) { echo $param1.$

内部变量和外部变量就是局部变量和全局变量吗?

问题描述 内部变量和外部变量就是局部变量和全局变量吗? 局部变量和全局变量是从作用域分类的 外部变量就是前面加了extern,这个是从生存期定义的 这个两者应该不能混为一谈 为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解呢? 解决方案 首先把对应的外部和内部分别说成是全局和局部,这个内外表示的域(即{})的内外,而不是extern表示的文件的内外.不过确实很多的时候这样的表示由于没有统一的叫法,不同的作者有自己的叫法,常常让读书的人费解.你ppt截图

iOS Block捕获外部变量和ARC自动拷贝block

Block内引用外部变量的问题 #define BLog(prefix,obj) {NSLog(@"位置和指针变量名:%@ ,指针内存地址:%p, 指针值:%p ,指向的对象:%@ ",prefix,&obj,obj,obj);} // 强引用 - (void)blockVariableStrongReferenceTest { NSLog(@"\n"); NSObject *obj = [[NSObject alloc] init]; BLog(@&quo

java-JAVA中类的实例变量和静态变量的赋值

问题描述 JAVA中类的实例变量和静态变量的赋值 学完了面向对象,回头看项目的时候在这个地方有些不太透,对于类的实例变量和静态变量如何赋值和访问及修改(所描述的赋值访问及修改可能用词不准确,恳请指正)谢谢!!! 解决方案 楼主亲,你可以通过这样的方式去理解静态变量和实例变量:(1)静态变量也称为类变量,语法上面用static修饰,这样的变量在JVM(Java虚拟机)将类加载进去的时候就和类一起被分配了内存,这个时候就已经可以使用了,而不需要等到创建类的实例后才能使用.这类变量可以直接通过"类名.

c#中如何把txt文件中的指定一行赋值给一个变量,txt中每行只有一个数字

问题描述 c#中如何把txt文件中的指定一行赋值给一个变量,txt中每行只有一个数字比如有X,YY<100,X=txt文件中的第一行Y>100&Y<200,X=txt文件中的第二行该如何用代码表达? 解决方案 解决方案二:其他的我相信你的智商是可以搞定的,关键是读取文件中每行的数字到数组中,这个我写一下:int[]arr=System.IO.File.ReadAllLines(@"e:/Test.txt",System.Text.Encoding.Defaul