如何将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程序员(

如何将linq-var数据类型传递给方法

返回这样的怎么样

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(?然后,您可以处理在那里生成的所有类,避免整个混乱。