使用LINQ调用sproc,如何从方法中传回var?

时间:2010-08-27 13:43:55

标签: c# linq linq-to-sql stored-procedures output-parameter

我有这种方法有一段时间了

public string getSlotText(int slotID)
{
    DataClasses1DataContext context = new DataClasses1DataContext();

    var slotString = context.spGetSlotTextBySlotID(slotID);

    return slotString.ElementAt(0).slotText;

}

但我现在真正想要的是像

public var getSlotText(int slotID)
{
    DataClasses1DataContext context = new DataClasses1DataContext();

    var slotString = context.spGetSlotTextBySlotID(slotID);

    return slotString;
}

因为slotString中有多个元素。我看到了其他一些例子,但没有LINQ调用sproc。

任何帮助都会很棒,非常感激。

非常感谢

1 个答案:

答案 0 :(得分:0)

var关键字不允许作为返回类型。它只能在具有初始化的方法和类成员中使用。

虽然可以对返回类型进行类型推断,这会违反C#中的其他一些内容。例如匿名类型。由于方法无法在C#中返回匿名类型,因此您需要另一项检查,即您不能返回匿名类型,而只是禁止将var关键字作为返回类型。

此外,允许var作为返回类型会使方法签名在更改实现时不太稳定。

编辑:目前还不清楚您希望返回什么,但这里有一些标准解决方案:

如果您想从结果返回所有slotText

return context.spGetSlotTextBySlotID(slotID).Select(s=> s.slotText).ToList());

(将返回List<string>

或者,如果您想要返回所有SlotText(或从sproc返回的任何类型)

return context.spGetSlotTextBySlotID(slotID).Select(s=> s.slotText).ToList());

(将返回List<SlotText>