如何从foreach之外的foreach循环中获取var?

时间:2018-01-19 21:09:31

标签: c# sql

我在c#中编写了一个foreach循环,在循环中是一个带有sql查询的var。

以下是foreach代码:

if (sql.Any())
{
    MessageBox.Show("Time is not available");
}
else
{
    // Other code
}

现在我想做点什么:

add

但我无法获得var sql。

所以if(sql.Any())

中有错误

那么如何才能获得这个var sql?

2 个答案:

答案 0 :(得分:0)

您必须将变量放在循环外部,在循环内部进行条件检查或者抽象。抽象将更适合您的需求,您执行数据库查询,填充集合,然后似乎正在检查结果。

如果我误解了,我道歉。

public class DbContext
{
     public IEnumerable<Sample> GetAllSamples(string query)
     {
          // Do your query, return your Sample object.
     }
}

所以,如果你在另一个类里面调用那个数据。

var context = new DbContext();
var samples = context.GetAllSamples("....");
if(samples.Any())
{
    // Do Something
}

答案 1 :(得分:-1)

    private static void Main(string[] args) {
        Test1();
    }
    #region Test1

    private static void Test1() {
        var performances = new List<Performance>();
        var thestm = new List<Performance>();

        var perf1 = new Performance {
            StartTime = 2,
            EndTime = 10,
            Stage = 4
        };
        var perf2 = new Performance {
            StartTime = 1,
            EndTime = 5,
            Stage = 4
        };
        var perf3 = new Performance {
            StartTime = 4,
            EndTime = 6,
            Stage = 4
        };
        var perf4 = new Performance {
            StartTime = 1,
            EndTime = 9,
            Stage = 4
        };


        performances.Add(perf2);
        performances.Add(perf1);

        thestm.Add(perf3);
        thestm.Add(perf4);

        var timeIsNotAvailable = false;
        string messageBoxString = "This time is available!";

        foreach (var pp in thestm) {
            timeIsNotAvailable = performances.Any(perf => perf.EndTime > pp.EndTime && perf.StartTime < pp.StartTime &&
                                                        perf.Stage == pp.Stage);
            if (timeIsNotAvailable) {
                messageBoxString = "This time is not available";
                break;
            }
        }

        Console.WriteLine(messageBoxString);

        var stop = "i";
    }
}

internal class Performance {
    public int Stage { get; set; }

    public int StartTime { get; set; }

    public int EndTime { get; set; }
}

#endregion

我的列表代表您的两个值,您要比较的时间以及您要比较的时间。如果这不能解决这个问题,请告诉我我不会考虑的内容,我会相应更新。