どのようにデータを下のクラスリストに追加しますか?両方のリストは動的であり、dailyingsclockingsリストはクロッキングリストの各項目ごとに異なる場合があります。 私は現在、各リスト、クッキー、およびdailyclockingsにデータを追加することができますが、dailyclockingsのデータはclockings [1] .dailyclockings [1]に引き込まれません。私はclockings [1] .nameとdailyclockings [1] .clockingdateのデータしか見ることができませんが、clockings [1] .dailyclocking [1] .clockingdateを表示すると値はnullです。私は何を達成しようとしてることは、あなたのコードには大きな誤解があり、次のC#リストと非リスト項目のクラス
Clockings[1].Department = "Testing"
Clockings[1].Name = "Fred"
Clockings[1].DailyClockings[1].ClockingDate = "2017/11/01"
Clockings[1].DailyClockings[1].InClockingTime = "08:00"
Clockings[1].DailyClockings[1].OutClockingTime = "14:00"
Clockings[1].DailyClockings[2].ClockingDate = "2017/11/02"
Clockings[1].DailyClockings[2].InClockingTime = "08:00"
Clockings[1].DailyClockings[2].OutClockingTime = "14:00"
Clockings[1].DailyClockings[3].ClockingDate = "2017/11/03"
Clockings[1].DailyClockings[3].InClockingTime = "08:00"
Clockings[1].DailyClockings[3].OutClockingTime = "14:00"
Clockings[1].DailyClockings[4].ClockingDate = "2017/11/06"
Clockings[1].DailyClockings[4].InClockingTime = "08:00"
Clockings[1].DailyClockings[4].OutClockingTime = "14:00"
public class Clockings
{
public string Department { get; set; }
public string UserName { get; set; }
public string StartTime { get; set; }
public int NoofDaysClocked { get; set; }
public List<DailyClocking> DailyClockings { get; set; }
}
public class DailyClocking
{
public string InClockingTime { get; set; }
public string OutClockingTime { get; set; }
public string ClockingDate { get; set; }
public string DayofTheWeek { get; set; }
public string MinInEarly { get; set; }
public string MinOutEarly { get; set; }
}
public List<Clockings> clockingTime()
{
List<Clockings> f = new List<Clockings>() ;
Clockings d = new Clockings();
DailyClocking d1 = new DailyClocking();
List<DailyClocking> d2 = new List<DailyClocking>();
float noofusers =1;
int col = 0;
int tmpemp = 0;
int n =0, x = 0;
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "[dbo].LateClocking";
SqlParameter param = new SqlParameter();
param.ParameterName = "@StartDate";
param.Value = 20170901;
cmd.Parameters.Add(param);
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@EndDate";
param1.Value = 20170930;
cmd.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@Branch";
param2.Value = "";
cmd.Parameters.Add(param2);
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@department";
param3.Value = "";
cmd.Parameters.Add(param3);
SqlParameter param4 = new SqlParameter();
param4.ParameterName = "@Nme";
param4.Value = "Fred Smith";
cmd.Parameters.Add(param4);
try
{
cmd.Connection.Open();
var reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
if (tmpemp == int.Parse(reader["mst_sq"].ToString()))
{}
else
{
if (noofusers >1)
{
f.Add(d);
}
col = 0;
noofusers = noofusers + 1;
tmpemp = int.Parse(reader["mst_sq"].ToString());
d.UserName = reader["mst_firstname"].ToString() + " " + reader["mst_lastname"].ToString();
d.StartTime = reader["starttime"].ToString();
d.Department = reader["dept_name"].ToString();
}
if (reader["dy"].Equals(System.DBNull.Value))
{}
else
{
d1.ClockingDate = reader["dy"].ToString().Substring(0, 4) + reader["dy"].ToString().Substring(5, 2) + reader["dy"].ToString().Substring(8, 2);
d1.MinInEarly = reader["mnearly"].ToString();
d1.MinInEarly = reader["mnlate"].ToString();
d1.InClockingTime = reader["tmeclocked"].ToString().Substring(11, 5);
d1.OutClockingTime = reader["earlyclocked"].ToString().Substring(11, 5);
d2.Add(d1);
}
col = col + 1;
d.NoofDaysClocked = col;
}
f.Add(new f.DailyClockings(d2));
f.Add(d);
}
}
catch (Exception ex)
{
// your handling code here
}
return (f);
}
これは私が私の問題を解決する助けていただきありがとうございます。今私は2番目の問題を抱えています。 d2のとき。add(d1)が実行されて新しい項目が追加され、上のすべての要素が新しい値で書き込まれます。これらの質問はC#を初めてお手伝いして申し訳ありません。私はVBコーダーであり、VB.netでも同様のことをしています。 –
前のコードを使って、 'd2.Add(DailyClocking(d1));' を試すことをお勧めします。これらの参照から新しいオブジェクトを作成するのではなく、毎回同じ参照を使用している可能性があります。 – Jack