同じIDに対して複数のデータを持つテーブルがあります。このデータを組み合わせる必要があります。
たとえば、このテーブルには次のものが含まれます
ID Visit DAte Visit number Rational
-----------------------------------------------
1 14/05/2011 1 new
1 15/06/2012 2 Emergency
1 17/07/2012 3 Check-Up
最大20回の訪問
欲しい結果はこんな感じ
ID Visit DAte Visit number Rational
-------------------------------------------------
1 14/05/2011 1 new
1 15/06/2012 2 Emergency
1 17/07/2012 3 Check-Up
1 14/05/2011 1 new
1 15/06/2012 2 Emergency
1 19/07/2012 4 follwo-up
1 14/05/2011 1 new
1 15/06/2012 2 Emergency
1 18/12/2012 5 Check-Up
etc....
最後は
1 14/01/2011 18 Referral
1 15/02/2012 19 Check-up
1 18/10/2012 20 Emergency
クエリでこれを行うことはできますか?
//-クラスを定義し、そのクラスからリストを定義します
public struct ACVsize5
{
public int ID;
public DateTime date;
public int RaId;
public int HpId;
public int DgId;
public int VisitNum;
}
List<ACVsize5> patient = new List<ACVsize5>();
私はこのクエルを使用しましたが、これは2つの値を選択しますが、3つ以上を取得する必要があります
var query = patient.SelectMany((value, index) => patient.Skip(index + 1),
(first,second) => new { first, second });
// - 編集
他の4人の患者と一致させるために1人の患者の組み合わせをチェックする必要があります
一致する場合は最初の組み合わせを生成することを思いつきましたが、残りを生成し続けますが、この操作は、以下のコードのパフォーマンスを向上させる方法を処理するのに長い時間がかかりましたか?
for (int j = 0; j < 10000; j++)
{
int id1 = getid(names[j].ToString(), 10000);
for (int t = 0; t < 10000; t++)
{
generate_firstACV5A(id1, nvisit(id1), names[j].ToString());
int id2 = getid(names[t].ToString(), 10000);
if (id1 == id2) { }
else
{
generate_firstACV5B(id2, nvisit(id2), names[t].ToString());
if (comparefirst()==true)
{
if (count == 0)
{
safecount++;
if (safecount == 4) break;
}