Нулевое значение в списке вместо имени - PullRequest
0 голосов
/ 12 июня 2018

Я использую базу данных для хранения коллекций точек местоположения и пытаюсь создать список, который избавляется от дубликатов.Это частично работает до сих пор.В настоящее время, когда я проверяю счет в моем списке через

Debug.Log("There are " + GameManager.driftTables.Count() + " drift sets in the list.");

, я получаю правильный счет обратно.но когда я пытаюсь вернуть имя каждой строки через

foreach (AllDrifts drift in GameManager.driftTables)
            {
                Debug.Log(drift.name);
            }

, я получаю Null для каждого.Что я здесь делаю неправильно?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using SimpleSQL;
using System.Runtime.InteropServices.ComTypes;

public class SQLiteActions : MonoBehaviour
{
    int driftCount;

    public void GetDriftTablesList()
    {
        GameManager.driftTables =
            DriftsDatabaseManager.Query<AllDrifts>(
                "SELECT DISTINCT driftID " +
                "FROM Drift"
            );

        foreach (AllDrifts drift in GameManager.driftTables)
        {
            Debug.Log(drift.name);
        }

        Debug.Log("There are " + GameManager.driftTables.Count() + " drift sets in the list.");
    }
}

public class AllDrifts
{
    [PrimaryKey]
    public string name { get; set; }
}

1 Ответ

0 голосов
/ 14 июня 2018

Я решил проблему, больше не используя DISTINCT и вместо этого просто обнаружив первый раз, когда значение DriftIndex появляется в списке, и отбросив все дубликаты после этого, вот так.

using UnityEngine;
using System.Linq;
using SimpleSQL;

    public class DriftSets
    {
        [PrimaryKey, AutoIncrement]
        public int DriftIndex { get; set; }
        public string DriftID { get; set; }
        public string DriftDateTime { get; set; }
        public string DriftName { get; set; }
        public string DriftStep { get; set; }
        public float DriftLat { get; set; }
        public float DriftLong { get; set; }
        public string DriftTexLocation { get; set; }
    }

    public class SQLiteActions : MonoBehaviour
    {
        public static SQLiteActions instance = null;
        // reference to the database manager in the scene
        public SimpleSQLManager DriftsDatabaseManager;

        private string sql;

        public void GetDriftTablesList()
        {
            sql =
                "SELECT MIN(DriftIndex), DriftID, DriftName, DriftDateTime, DriftTexLocation  " +
                "FROM Drift " +
                "GROUP BY DriftID " +
                "ORDER BY DriftDateTime DESC";

            GameManager.driftSets = DriftsDatabaseManager.Query<DriftSets>(sql);

            foreach (var driftSet in GameManager.driftSets)
            {
                Debug.Log(driftSet.DriftName);
            }
        }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...