【发布时间】:2011-09-15 18:21:43
【问题描述】:
我有一个包含四个组合的表格,例如 cbmefrom(age from ) cbmeto(age to) cbperiod(periodtype values liek this "Next 7 Days" ......) 和 cbgender(cbgender)..
我也有一个数据网格视图(dgvreports)..
我要做的是填充年龄在 20 到 40 岁之间且会员资格将在接下来的 8 天或 24 天或类似情况下到期的会员详细信息...
为此,我编写了一个我在下面指定的类...
public static string ConvertGender(string Gender)
{
switch (Gender)
{
case "Male": return "M";
case "Female": return "F";
default: return "";
}
}
public BindingSource getmebershipexpirymembers(string gender , DateTime strtdate,DateTime enddate,DateTime min , DateTime max)
{
bs2.DataSource = null;
var membersreports = from report in eclipse.members
let dob= eclipse.members.Take(1).Select(x=>report.member_Dob).Cast<DateTime>().FirstOrDefault()
let strtdatees = eclipse.membertomships.Take(1).Select(x=>x.memberToMship_EndDate).Cast<DateTime>().FirstOrDefault()
join memtomship in eclipse.membertomships on report.member_Id equals memtomship.member_Id
into joinmemtomship from memtomship in joinmemtomship.DefaultIfEmpty()
join mshoption in eclipse.mshipoptions on memtomship.mshipOption_Id equals mshoption.mshipOption_Id
into joinmshipoption from mshoption in joinmshipoption.DefaultIfEmpty()
join membershiptypes in eclipse.mshiptypes on mshoption.mshipType_Id equals membershiptypes.mshipType_Id
into joinmembershipdifftypes from membershiptypes in joinmembershipdifftypes.DefaultIfEmpty()
join membershipstatustypes in eclipse.mshipstatustypes on memtomship.mshipStatusType_Id equals membershipstatustypes.mshipStatusType_Id
into joinmemberstatusdifftypes from membershipstatustypes in joinmemberstatusdifftypes.DefaultIfEmpty()
where (report.member_Gender.StartsWith(gender) || string.IsNullOrEmpty(gender))
&& dob >= min && dob < max
&& (strtdatees > strtdate && strtdatees < enddate)
select new
{
MemberID = report.member_Id,
Lastname = report.member_Lastname,
Firstname = report.member_Firstname,
Postcode = report.member_Postcode,
Reference = report.member_Reference,
CardNum = report.member_CardNum,
IsBiometric = report.member_IsBiometric,
DOB = report.member_Dob,
MShipType = membershiptypes.mshipType_Name,
StatusType = membershipstatustypes.mshipStatusType_Name,
EndDate = memtomship.memberToMship_EndDate
};
bs2.DataSource = membersreports;
return bs2;
}
我正在以我在下面提到的形式访问上面的类...
public void Getgroupcorporatemembers()
{
int startdays = 0;
int enddays = 0;
if (cbMeperiodType.Text == membershipexpiry.type1)
{
startdays = 0;
enddays = 7;
}
if (cbMeperiodType.Text == membershipexpiry.type2)
{
startdays = 8;
enddays = 14;
}
if (cbMeperiodType.Text == membershipexpiry.type3)
{
startdays = 15;
enddays = 30;
}
if (cbMeperiodType.Text == membershipexpiry.type4)
{
startdays = 31;
enddays = 90;
}
DateTime today = DateTime.Now;
DateTime strtdate = today.AddDays(startdays);
DateTime enddate = today.AddDays(enddays);
int agefrom = Convert.ToInt32(cbMeFrom.Text);
int ageto = Convert.ToInt32(CbMeTo.Text);
DateTime max = today.AddYears(-agefrom);
DateTime min = today.AddYears(-ageto);
string gender = "";
gender = Classes.reportmembers.ConvertGender(cbMEGendertype.Text);
dgvReportMembers.DataSource = objreports.getmebershipexpirymembers(gender, strtdate, enddate, max, min);// here i am accessing the method in class
SetDgvheaders();
}
struct membershipexpiry
{
public const string type1 = "Next 7 Days";
public const string type2 = "8 - 14 Days";
public const string type3 = "15 - 30 Days";
public const string type4 = "31 - 90 Days";
}
但我在这一行遇到错误...bs2.DataSource = membersreports;
Error :Nullreference excpetion was unhandled
Object reference not set to an instance of an object.
【问题讨论】:
-
@Yochai - 但是函数的第一行会抛出异常。
-
@Yochai 不。查询中的某些内容为空。查询仅在分配给数据源时才被评估,因此该行发生空引用异常。
-
@Oded 我确定我在“bs2.DataSource = membersreports;”这一行得到了空引用异常
-
你是在调试中编译吗?还是发布优化?
-
@Yochai 我已将此方法放入按钮单击事件中,当我选择“cbperiod”中的任何项目时,它会在此行出现错误 bs2.DataSource = membersreports;
标签: c# .net winforms linq linq-to-entities