我正在使用一个名为" LINQ to Access"的第三方软件包。我收到以下错误:
System.Data.OleDb.OleDbException about"不支持JOIN运算符。"
我该如何解决?
using(var context = AccessTools.CreateDataConnection(connStr)) {
var tMachine = context.GetTable < Machine > ();
var tUserinfo = context.GetTable < USERINFO > ();
var tCheckintoutFiltered = context.GetTable < CHECKINOUT > ().Where(o => o.CHECKTIME >= startTime && o.CHECKTIME <= endTime);
var join1 = tCheckintoutFiltered.Join(
tMachine,
outer => outer.sn,
inner => inner.sn, (outer, inner) => new {
outer.USERID, outer.CHECKTIME, outer.CHECKTYPE, inner.MachineNumber
});
var join2 = join1.Join(
tUserinfo,
outer => outer.USERID,
inner => inner.USERID, (outer, inner) => new AttendanceLogObject {
Checktime = outer.CHECKTIME, Checktype = outer.CHECKTYPE, MachineNumebr = outer.MachineNumber, Badgenumber = inner.Badgenumber
});
foreach(var alo in join2) {
list.Add(new AttendanceLogObject { Checktime = alo.Checktime., Checktype = alo.Checktype, MachineNumebr = alo.MachineNumebr, Badgenumber = alo.Badgenumber });
}
}
答案 0 :(得分:0)
如果包不支持特定功能,那么“解决”它的唯一方法是:
否则,您需要使用产品 支持的功能“解决”问题。例如表[参与者] ......
ID FirstName MedalID Event
-- --------- ------- -----------
1 Gord 1 Napping
2 Helen 3 Daydreaming
......和[奖牌] ......
ID Name
-- ------
1 Gold
2 Silver
3 Bronze
......我真的希望能够做到这一点:
var particips = from p in db.Participants
join m in db.Medals on p.MedalID equals m.ID
select new { p.FirstName, MedalName = m.Name, p.Event };
foreach (var particip in particips)
{
Console.WriteLine(
"{0} won a {1} medal in \"{2}\"",
particip.FirstName,
particip.MedalName,
particip.Event);
}
但如果不支持join
,我可能不得不这样做:
var medalNames = new Dictionary<int, string>();
var medals = from m in db.Medals select m;
foreach (var medal in medals)
{
medalNames.Add(medal.ID, medal.Name);
}
var particips = from p in db.Participants
where p.MedalID != null
select p;
foreach (var particip in particips)
{
Console.WriteLine(
"{0} won a {1} medal in \"{2}\"",
particip.FirstName,
medalNames[(int)particip.MedalID],
particip.Event);
}