【问题标题】:LINQ Query Method ParameterLINQ 查询方法参数
【发布时间】:2012-02-09 16:35:42
【问题描述】:

过去几周,我一直在努力尝试利用 Access 数据库中包含的数据。我到了我觉得我应该考虑如何实现设计的地步了。

如果我没记错的话,不能使用匿名类型作为方法的参数。这让我想知道在方法中返回 LINQ 查询结果的最佳方法是什么。如果您需要一些背景信息,所有问题都来自过去两周。

所以这让我想知道一些事情:

编写查询时是否必须使用 var 语法?根据我在这里阅读的文章Here,理论上我可以使用我自己的类或页面上列出的示例(字符串、整数等)。

这引出了我的问题的第二部分: 如果我说使用以下语法

IEnumerable<CustomClassHere> result = (from X in ....
where ....
**select** new CustomClassHere
{
Value = X.Field<int>("...")
}
);

我是否能够在返回 IEnumerable 的方法中返回结果?

如果我当前的问题不清楚,我愿意提供更多详细信息,提供更详细的代码示例。如果您有任何涉及 LINQ 的设计建议,我将不胜感激。我希望使此类及其与 Access 数据库的交互尽可能模块化。

【问题讨论】:

    标签: c# linq c#-4.0


    【解决方案1】:

    示例类

    public class abc
    {
        internal string str;
        internal int i;
    }
    

    列表集合

    List<abc> List = new List<abc>();
    
    abc Obj = new abc();
    Obj.str = "1";
    Obj.i = 1;
    List.Add(Obj);
    
    Obj = new abc();
    Obj.str = "2";
    Obj.i = 1;
    List.Add(Obj);
    
    Obj = new abc();
    Obj.str = "3";
    Obj.i = 1;
    List.Add(Obj);
    

    IEnumerable<abc> FinalList = (from lst in List select lst).ToList();
    

    结果集


    示例参考

    101 LINQ SAMPLES - Very helpful to make stronghold on LINQ to Objects

    【讨论】:

      【解决方案2】:

      是的,您可以返回IEnumerable&lt;CustomClass&gt;

      第一部分,不是,您不必使用var,除非您选择匿名类(在上面的示例中您没有这样做)。

      【讨论】:

      • 好的,那么您不能以类型安全的方式返回匿名对象。您可以只返回一个对象并使用反射,但这有明显的缺点。如果你想要类型安全,你必须创建一个自定义类。
      • 顺便说一句,使用 var 并不意味着不知道对象的类型。它只是节省您输入它 - 编译器将用真实类型替换它。例如string s = ""var s = "" 完全一样。
      • @Ramhound 够公平的。我个人是 var 的粉丝,节省了几次击键,并且可以使一些重构更容易。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多