LINQ to SQL执行select方法

时间:2012-03-10 23:18:31

标签: c# asp.net linq linq-to-sql

我是LINQ的新手,所以我想弄清楚如何用lambda表达式执行方法。

   public void GetData()
    {

     using (MyClassesDataContext context = new MyClassesDataContext())
                {
                    var problems = (from p in context.Problems select p).Take(10);
                    problems.Select(t => DisplayData(t.Text));
                }

    }

     public void DisplayData(string Text)
            { 

            }

我收到了这个错误:

  

方法的类型参数   “System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,   System.Func)'无法从用法中推断出来。   尝试明确指定类型参数。

在这一行:

 problems.Select(t => DisplayData(t.Text));

我做错了什么?

3 个答案:

答案 0 :(得分:4)

Select运算符用于创建投影 - 即作为参数传递的lambda表达式指示如何从集合中的每个对象创建新对象

您要做的是对集合中的每个项目执行操作。使用foreach循环:

var problems = (from p in context.Problems select p).Take(10);

foreach (var t in problems)
{
     DisplayData(t.Text);
}

答案 1 :(得分:0)

我认为如果您对代码进行以下更改,它将正常工作:

problems.Select(t => { DisplayData(t.Text); return true; })

答案 2 :(得分:-1)

  

Parallel.ForEach 的。这是一个示例示例......

Reference - 执行foreach操作,其中迭代可以并行运行。


样本类

class abc
{
    public int i;
}

示例LINQ代码

List<abc> d = new List<abc>();
d.Add(new abc { i = 1 });
d.Add(new abc() { i = 2 });
d.Add(new abc() { i = 3 });
d.Add(new abc() { i = 4 });

var problems = (from p in d select p).Take(2);
int k = 0;
System.Threading.Tasks.Parallel.ForEach(problems, j =>
    {
        abcd(ref j.i);
        k += j.i;
    }
);

样本函数

void abcd(ref int i)
{
    i++;
}