我在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?
答案 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
我的列表代表您的两个值,您要比较的时间以及您要比较的时间。如果这不能解决这个问题,请告诉我我不会考虑的内容,我会相应更新。