如何将linq-var数据类型传递给方法
本文关键字:方法 数据类型 linq-var | 更新日期: 2023-09-27 18:01:02
可能重复:
如何将匿名类型传递给方法?
我这里有一个可怕的问题,希望你能帮我解决
有以下linq到sql的查询,非常简单:
var i = from cr in db.ComprobanteRecepcions join c in db.Comprobantes
on new { cr.RFC, cr.RFCProveedor, cr.Folio, cr.Serie } equals new { c.RFC, c.RFCProveedor, c.Folio, c.Serie }
where
Convert.ToString(cr.IDSucursal) == "4" &&
cr.RFC == "FIN020938SVR "
select new { cr.Serie, cr.Folio, cr.IDStatusComp, c.FechaEmision, c.Comentarios, c.Total };
我想把I传递给一个方法,比如这个
mymethod void(var a)
当然这是不可能的。。。并创建一个类型(类(来返回它,类似于这个
select new MyType {cr.Serie, cr.Folio, cr.IDStatusComp, c.FechaEmision, c.Comentarios, c.Total };
是不切实际的,比如返回XElement或XDocument,那么我还能做什么呢??我必须用vari变量填充数据网格,我不知道如何获得这个变量,我也在谷歌上搜索了答案,但没有简单的答案。。。
了解我是一个使用c#、.net和MS技术的新手(我是一名Java程序员(
返回这样的怎么样
public class MyType
{
public ComprobanteRecepcions Recepcions { get;set; }
public Comprobantes Comprobantes { get;set; }
}
在你的linq:
select new MyType { Recepcions = cr, Comprobantes = c }
试试看这里:
LINQ:我可以将var作为参数传递给方法吗?
或此处:
传递参数
var只能在本地变量已声明并初始化在同一声明中;变量无法初始化为null或方法组或匿名函数。
最简单的方法是创建一个具体的类型来表示结果(上面的MyType(,而不是试图传递匿名类型。
var实际上只用于本地使用,编译器可以根据使用情况推断类型。一旦将其传递给另一个方法,就必须使用具体类型。
(尽管你可以让你的方法以"object"为参数,但在那之后,除了使用反射之外,你将无法对它做太多操作(
使用.net 4 中的动态关键字
DoStuff(new { Message = "Hello Monkey"});
static void DoStuff(dynamic args)
{
Console.WriteLine(args.Message);
}
所以我解决了它…感谢我,(伟大的解决方案外观:
System.Collections.IEnumerable i = from cr in db.ComprobanteRecepcions join c in db.Comprobantes
on new { cr.RFC, cr.RFCProveedor, cr.Folio, cr.Serie } equals new { c.RFC, c.RFCProveedor, c.Folio, c.Serie }
where
Convert.ToString(cr.IDSucursal) == "4" &&
cr.RFC == "FIN020938SVR "
select new { cr.Serie, cr.Folio, cr.IDStatusComp, c.FechaEmision, c.Comentarios, c.Total };
return i;
然后在数据网格中,我只是把我作为数据源,绑定它,瞧!!
如果你想把它传递给的方法是你自己的,那么根据你想做什么(或者你愿意使用多少反射/约定,泛型可能是你的答案
private string CheckMeOut<T>( T something )
{
return something.GetType().Name;
}
public void CheckMeOutTest( )
{
var anon = ( from x in typeof(string).GetMethods( )
select new {x.Name, Returns = x.ReturnType.Name} ).First( );
string s = CheckMeOut( anon );
Console.Out.WriteLine( s );
}
如果您使用的是SQL数据库,您是否考虑过从数据库自动生成数据实体模型(.edmx(?然后,您可以处理在那里生成的所有类,避免整个混乱。