从foreach循环返回多个项目

时间:2015-05-13 12:32:23

标签: c#

我想问一下如何只为每个循环返回

当前我得到的并非所有代码路径都返回一个值。

public Config getConfigSingle(string CID, string name)
{
    var raw = db.ap_GetInfo(CID, name);

    foreach (var item in raw.ToList())
    {
        return new Config
        {
            Name = item.Name.ToString(),
            Value = item.Value.ToString(),
        };
    }       
}

public partial class ClubConfig
{
    public string Name { get; set; }
    public string Value { get; set; }
}

谢谢M

3 个答案:

答案 0 :(得分:4)

您可以使用yield

public IEnumerable<Config> getConfigSingle(string CID, string name)
{
    var raw = db.ap_GetInfo(CID, name);

    foreach (var item in raw.ToList())
    {
        yield return new Config
        {
            Name = item.Name.ToString(),
            Value = item.Value.ToString(),
        };
    }       
}

答案 1 :(得分:3)

您可以使用LINQ构建您的对象以返回:

public List<Config> getConfigSingle(string CID, string name)
{
var raw = db.ap_GetInfo(CID, name);

return raw.Select(r => new Config 
                        { 
                           Name = r.Name.ToString(), 
                           Value = r.Value.ToString()
                        }).ToList();

}

答案 2 :(得分:2)

您必须为每个代码路径返回一个值。如果foreach中的collectio为空,则该方法不会返回任何内容。最后添加一个返回null。

a$ = ""
DO
IF LOC(1) THEN a$ = a$ + INPUT$(1, 1)
LOOP UNTIL INSTR(a$, "OK")