调用Linq执行存储过程的元素

时间:2010-08-19 09:28:09

标签: c# linq stored-procedures

我在C#中创建了一个Linq to SQL类。 获取dbml文件中存储的precedure。 添加了新的数据源(类型对象)。

所以我想获取Linq返回的Table的值。

LeasinggesellschaftDataContext blabla = new LeasinggesellschaftDataContext();

            blabla.getDetails(2);

            MessageBox.Show(blabla.Gesellschaft.ElementAt<Gesellschaft>(0).Gesellschaftsname.ToString());

LeasinggesellschaftDataContext = dbml文件中的类。 getDetails =存储过程。 Gesellschaft = sp的返回表。

我想要“Gesellschaftsname”列的价值。

有人能说出为什么ElementAt Methode无效吗?

_______编辑___________

我从你那里得到了提示并制作了一个变量,请参阅下面的代码:

        LeasinggesellschaftDataContext blabla = new LeasinggesellschaftDataContext();
        ISingleResult<getDetailsResult> returnset = blabla.getDetails(2);
        getDetailsResult lala;

        lala = (getDetailsResult)returnset;
        MessageBox.Show(lala.Handelsregister.ToString();)

        foreach (getDetailsResult result in returnset)
     {
      MessageBox.Show(result.Handelsregister);                
     }

所以“下一个”的问题是。为什么foreach工作和lala没有访问?

以下代码

        LeasinggesellschaftDataContext blabla = new LeasinggesellschaftDataContext();
        ISingleResult<getDetailsResult> returnset = blabla.getDetails(2);
        getDetailsResult lala;

        lala = returnset.First();
        MessageBox.Show(lala.Handelsregister.ToString());

2 个答案:

答案 0 :(得分:1)

returnset不属于getDetailsResult类型,属于ISingleResult<getDetalsResult>类型,因此将returnset投射到getDetailsResult会引发异常。

正如Albin Sunnabo所说,只要lala分配returnset.First()的价值就可以使用它,只要有结果。 First扩展方法将返回存储过程的第一个结果。

getDetailsResult lala = returnset.First();

答案 1 :(得分:0)

存储过程后需要括号:blabla.Gesellschaft().