相关疑难解决方法(0)

如何获取特定类型(按钮/文本框)的Windows窗体表单的所有子控件?

我需要获取x类型的表单上的所有控件.我很确定我曾经使用过这样的代码:

dim ctrls() as Control
ctrls = Me.Controls(GetType(TextBox))
Run Code Online (Sandbox Code Playgroud)

我知道我可以迭代所有控件让孩子们使用递归函数,但是有更简单或更直接的东西,可能如下所示?

Dim Ctrls = From ctrl In Me.Controls Where ctrl.GetType Is Textbox
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net controls winforms

113
推荐指数
7
解决办法
18万
查看次数

方法无法转换为商店表达式

我看到这个代码使用LINQ to SQL,但是当我使用Entity Framework时,它会抛出此错误:

LINQ to Entities无法识别方法'System.Linq.IQueryable'1 [MyProject.Models.CommunityFeatures] GetCommunityFeatures()'方法,并且此方法无法转换为商店表达式.

存储库代码是这样的:

public IQueryable<Models.Estate> GetEstates()
{
    return from e in entity.Estates
           let AllCommFeat = GetCommunityFeatures()
           let AllHomeFeat = GetHomeFeatures()
           select new Models.Estate
                      {
                                EstateId = e.EstateId,
                                AllHomeFeatures = new LazyList<HomeFeatures>(AllHomeFeat),
                                AllCommunityFeatures = new LazyList<CommunityFeatures>(AllCommFeat)
                      };
}

public IQueryable<Models.CommunityFeatures> GetCommunityFeatures()
{
    return from f in entity.CommunityFeatures
           select new CommunityFeatures
                      {
                          Name = f.CommunityFeature1,
                          CommunityFeatureId = f.CommunityFeatureId
                      };
}

public IQueryable<Models.HomeFeatures> GetHomeFeatures()
{
    return from f in entity.HomeFeatures
           select new HomeFeatures()
           {
               Name = …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities entity-framework repository-pattern

87
推荐指数
1
解决办法
8万
查看次数

扩展方法语法与查询语法

如果有时间使用标准linq关键字或linq扩展方法与lambda表达式,我正试图处理.他们似乎做同样的事情,只是写得不一样.这纯粹是风格问题吗?

var query = from p in Products
    where p.Name.Contains("foo")
    orderby c.Name
    select p;

// or with extension methods:
var query = Products
    .Where(p => p.Name.Contains("foo"))
    .OrderBy(p => p.Name);
Run Code Online (Sandbox Code Playgroud)

他们非常相似,第二个例子更简洁,但如果你不知道=>在做什么,可能会表现得更差.

除了编写简洁的代码之外,使用扩展方法而不是LINQ语法还有其他优点吗?

.net c# linq extension-methods linq-query-syntax

65
推荐指数
4
解决办法
3万
查看次数

LINQ:点表示法与查询表达式

我开始一般使用LINQ(到目前为止使用XML和toSQL).我已经看到有时候有两种或更多种方法可以达到相同的效果.拿这个简单的例子,据我所知,两者都返回完全相同的东西:

SomeDataContext dc = new SomeDataContext();

var queue = from q in dc.SomeTable
        where q.SomeDate <= DateTime.Now && q.Locked != true
        orderby (q.Priority, q.TimeCreated)
        select q;

var queue2 = dc.SomeTable
        .Where( q => q.SomeDate <= DateTime.Now && q.Locked != true )
        .OrderBy(q => q.Priority)
        .ThenBy(q => q.TimeCreated);
Run Code Online (Sandbox Code Playgroud)

除了我在语法中可能犯的任何错误或缺少参数或差异之外,我们的想法是有两种表达同一事物的方法; 我知道第一种方法有一些局限性,"点符号"更完整,但除此之外,还有其他优点吗?

linq lambda .net-3.5

57
推荐指数
3
解决办法
2万
查看次数

将字符串数组转换为int数组

我尝试了几种不同的方法,似乎无法使用vb.net得到我想要的结果.

我有一个字符串数组.{"55555","44444",""}

我需要一个整数数组{55555,44444}

这是一个将数组作为参数发送到晶体报告的wpf页面.

任何帮助表示赞赏.

vb.net

17
推荐指数
1
解决办法
4万
查看次数

VB.Net和C#之间LINQ语法的差异

出于好奇,再一次:

在VB.Net中编写了几个项目后,我惊讶地发现C#和VB.NET LINQ用法之间存在一些细微差别.例如,如果我们想要按多个属性(列)对元素进行分组,我们需要显式创建一个新的匿名类型:

var procs = from c in Process.GetProcesses() 
            group c by new {c.BasePriority, c.Id} into d 
            select d;
Run Code Online (Sandbox Code Playgroud)

而在VB.NET中,更直接的语法已经做到了:

Dim b = From c In Process.GetProcesses()
        Group c By c.BasePriority, c.Id Into Group
        Select Group
Run Code Online (Sandbox Code Playgroud)

因此,不需要在这里创建一个带有"new"的类型.

还有什么区别?C#和VB.NET中的LINQ语法有什么好的比较吗?

c# linq vb.net c#-to-vb.net

14
推荐指数
1
解决办法
5818
查看次数

我应该在2016年使用哪个ORM用于与SQL服务器通信?

我的大部分服务器端体验都是使用nodeJS meteor或rails,所以我还没有丰富的.Net知识.在rails中它很容易选择ORM,因为ActiveRecord是城里唯一的游戏或者看起来如此.我的方法通常是使用ORM查询所有内容,如果你不能将它拉下来,那么请下拉到原始SQL.

但是,我正在尝试阅读有关在.Net 4.5或更新的应用程序中查询我的数据库的教程和课程,我对未来的方式感到困惑.我在下面看到教程

  • Linq Lambda语法
  • Linq查询语法
  • 实体框架

现代.net应用程序的建议ORM是什么?看起来我可以在上述所有方面做基本的CRUD操作.但是,一个人更适合说跨表加入吗?请注意,我只计划针对我的.net解决方案查询Microsoft SQL服务器数据库.

让我感到困惑的是阅读EF取代了linq然后阅读EF也使用了linq.因此,当我看到一个例子说选择所有列我不知道我是否使用过去或未来的语法.也只是看代码我不知道它的linq或EF.我可以告诉它的查询或lambda语法.

.net linq asp.net orm entity-framework

13
推荐指数
2
解决办法
2万
查看次数

皮条客我的LINQ:基于另一篇文章的学习练习

我决定第一次试用LINQ尝试解决这个问题.

我第一次涉足LINQ精彩世界的结果如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>() 
            { 
               "fred-064528-NEEDED1", 
               "xxxx", 
               "frederic-84728957-NEEDED2", 
               "sam-028-NEEDED3", 
               "-----", 
               "another-test" 
            };

            var result =
            from s in list
            where (from c in s where c == '-' select c).Count() == 2
            select s.Substring(s.LastIndexOf("-") + 1);

            foreach (string s in result)
                Console.WriteLine(s);
            Console.WriteLine("Press Enter");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何改进上述解决这个人为设计的小例子的方法.我对是否使用了最好的验证方法,或者我如何本地化"按Enter"或类似的东西不太感兴趣; 我只是想使用这个例子来学习更多关于LINQ的知识.

c# linq lambda coding-style

8
推荐指数
1
解决办法
920
查看次数

不能将Enumerable.Count与List一起使用,编译器假定为List.Count

我还没有注意到这种行为,也许是因为我更喜欢VB.NET中的查询语法,并将查询和执行方法分成不同的语句.

如果我尝试编译以下简单查询:

Dim wordList As List(Of String) = New List(Of String)
Dim longWords As Int32 = wordList.Count(Function(word) word.Length > 100)
Run Code Online (Sandbox Code Playgroud)

编译器不喜欢这个,因为他希望没有参数List.Count:

"Public Readonly Property Count As Integer"没有参数,其返回类型无法编入索引.

如果我声明它IEnumerable(Of String)按预期工作:

Dim wordSeq As IEnumerable(Of String) = New List(Of String)
Dim longWords As Int32 = wordSeq.Count(Function(word) word.Length > 100)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?什么阻止编译器使用Enumerable扩展方法Count而不是ICollection.Count属性.请注意,我已经添加了Imports System.Linq和这两个Option StrictOption InferOn.我正在使用.NET 4.0(Visual Studio 2010).

我很困惑,因为在C#中这没有问题:

List<String> wordList  = new List<String>();
int longWordCount …
Run Code Online (Sandbox Code Playgroud)

.net c# linq vb.net

7
推荐指数
1
解决办法
399
查看次数

Linq查询语法与方法链:返回类型

在这里这里阅读,我理解查询语法和方法扩展几乎是一种语法差异.但现在,我有一个包含测量数据的数据结构,并希望确定百分位数.我写:

var ds = (from device in dataSet.devices
          where !device.paramValues[i].Equals(double.NaN)
          select device.paramValues[i]).OrderBy(val => val);
double median = percentile(ds as IOrderedEnumerable<double>, 0.5);
Run Code Online (Sandbox Code Playgroud)

一切正常.ds是类型的System.Linq.OrderedEnumerable<double,double>

令我困惑的是用查询语法编写整个内容:

var ds = (from device in dataSet.devices
          where !device.paramValues[i].Equals(double.NaN)
          orderby device.paramValues[i]
          select device.paramValues[i]);
double median = percentile(ds as IOrderedEnumerable<double>, 0.5);
Run Code Online (Sandbox Code Playgroud)

现在,ds是类型,System.Linq.Enumerable.WhereSelectEnumerableIterator<Dataset.DeviceData,double>并且对百分位函数的调用失败.

还不确定我在这里缺少什么... - 没有特别的理由为什么我更喜欢第二种语法,但我想了解其中的差异......感谢您的帮助!

c# linq

6
推荐指数
1
解决办法
238
查看次数