unable to find string literal operator 'operator""String'

Whats wrong with this coding?
I just try to save data on the sd card .. but it print the error. Please help me anyone.

#include <Servo.h>
#include <SPI.h>
#include "rgb_lcd.h"
#include <stdlib.h>
#include <string.h>
#include <TH02_dev.h>
#include <SD.h>

//#define CMDSTR_MAX_LEN (128)
//#define LOW_TEMP       (10)
//#define NOM_TEMP       (25) 
//#define HIGH_TEMP      (40)

#define SENSOR_COUNT   (5)
#define VAR1_COUNT     (SENSOR_COUNT+1)
typedef int (*pgetSensorValue)(void);

int getTempSensorValue();
int getSoundSensorValue();
int getHumiSensorValue();
int getLightSensorValue();
int getUVSensorValue();
int getPIRSensorValue();

rgb_lcd lcd;
//boolean isBackLightOn = true;

//char cmdstr[CMDSTR_MAX_LEN];

const int numRows = 2;
const int numCols = 16;
const int chipSelect = 4;

const int LightSensorIndex = 1;
const int UVSensorIndex = 2;
const int THSensorIndex = 3;


const int pinLight = A2;
const int pinUV = A3;
const int pinPIR = 7;

long ID = 1;

const char* SerialVarList1[] = { "Temperature", "Humidity", "Light", "UltraViolet", "PIR"};
enum SENSOR {TEMPER=0,HUMI,LIGHT,UV,PIR};

pgetSensorValue getSensorValueList[]={
  getTempSensorValue, 
  getHumiSensorValue, 
  getLightSensorValue, 
  getUVSensorValue, 
  getPIRSensorValue, 
};

int SensorValue[SENSOR_COUNT];
                                      


void printSettings(void){
    Serial.println("The Sensors Value as follow:");
  for(int i=0; i<SENSOR_COUNT;i++){
    Serial.print(SerialVarList1[i]);
    Serial.print(" = ");
    Serial.println(getSensorValueList[i]());   
  }
}


//get Temperature Senso value
int getTempSensorValue(){
  int temper =(int) TH02.ReadTemperature();
  SensorValue[TEMPER] = temper;
  return temper;
}

//get Humidity Senso value
int getHumiSensorValue(){
  int humidity =(int)TH02.ReadHumidity();
  SensorValue[HUMI] = humidity;
  return humidity;
}

//get Grove-Light Sensor value
int getLightSensorValue(){
  return (SensorValue[LIGHT] = analogRead(pinLight));
}
//get Grove-UV Sensor value
int getUVSensorValue(){
  return (SensorValue[UV] = analogRead(pinUV));
}

//Grove PIR Motion Sensor
int getPIRSensorValue(){
  return (SensorValue[PIR] = digitalRead(pinPIR));
}


  
  
void setup() 
{
  Serial.begin(9600);
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);    
    while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
      
    printSettings();

    


  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

  File logFile = SD.open("LOG.csv", FILE_WRITE);
  if (logFile)
  {
    logFile.println(", , , , ,");
   String header = "ID, Temperature, Humidity, Light, UV, PIR";
   logFile.println(header);
   logFile.close();
   Serial.println(header);
  }
  else
  {
    Serial.println("Couldn't open file");
  }
        
}


void loop() 
{ 
   // make a string for assembling the data to log:
  String dataString = String(ID) + ","String(getTempSensorValue) + "," + String(getHumiSensorValue)+ "," + String(getLightSensorValue)+ "," + String(getUVSensorValue)+ "," +  String(getPIRSensorValue);
/*  dataString += getTimeStamp();
  dataString += " : ";
  dataString += String(SerialVarList1[]) + " : " + String(getTempSensorValue);//[0])+"," + String (sensordata[1])+" ,"+ String (sensordata[2]);
  dataString += String(SerialVarList1[]) + " : " + String(getHumiSensorValue);
  dataString += String(SerialVarList1[]) + " : " + String(getLightSensorValue);
  dataString += String(SerialVarList1[]) + " : " + String(getUVSensorValue);
  dataString += String(SerialVarList1[]) + " : " + String(getPIRSensorValue);*/


 
  }

/*const int LightSensorIndex = 1;
const int UVSensorIndex = 2;
const int THSensorIndex = 3;
const int pinLight = A2;
const int pinUV = A3;
const int pinPIR = 7;*/

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("LOG.csv", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  } 
}

ID++;
/*String getTimeStamp() {
  String result;
  Process time;
  // date is a command line utility to get the date and the time
  // in different formats depending on the additional parameter
  time.begin("date");
  time.addParameter("+%D-%T");  // parameters: D for the complete date mm/dd/yy
  //             T for the time hh:mm:ss
  time.run();  // run the command

  // read the output of the command
  while (time.available() > 0) {
    char c = time.read();
    if (c != '\n') {
      result += c;
    }
  }

  return result;
}*/

Please help me anyone.

You have a huge amount of code, using some non-standard libraries. The compiler gave you a lot more information, like line number, that you didn't share with us. Why not? Is it really that difficult to copy and paste the COMPLETE error message?

Why are you starting ANOTHER thread with the same stupid code?

So what I need to do? sorry because i'm new in this field.

I re-upload the coding here:

#include <SPI.h>
#include "rgb_lcd.h"
#include <TH02_dev.h>
#include <SD.h>


#define SENSOR_COUNT   (5)
#define VAR1_COUNT     (SENSOR_COUNT+1)
typedef int (*pgetSensorValue)(void);

int getTempSensorValue();
int getSoundSensorValue();
int getHumiSensorValue();
int getLightSensorValue();
int getUVSensorValue();
int getPIRSensorValue();

rgb_lcd lcd;

const int numRows = 2;
const int numCols = 16;
const int chipSelect = 4;

const int LightSensorIndex = 1;
const int UVSensorIndex = 2;
const int THSensorIndex = 3;


const int pinLight = A2;
const int pinUV = A3;
const int pinPIR = 7;

long ID = 1;

const char* SerialVarList1[] = { "Temperature", "Humidity", "Light", "UltraViolet", "PIR"};
enum SENSOR {TEMPER=0,HUMI,LIGHT,UV,PIR};

pgetSensorValue getSensorValueList[]={
  getTempSensorValue, 
  getHumiSensorValue, 
  getLightSensorValue, 
  getUVSensorValue, 
  getPIRSensorValue, 
};

int SensorValue[SENSOR_COUNT];
                                      


void printSettings(void){
    Serial.println("The Sensors Value as follow:");
  for(int i=0; i<SENSOR_COUNT;i++){
    Serial.print(SerialVarList1[i]);
    Serial.print(" = ");
    Serial.println(getSensorValueList[i]());   
  }
}


//get Temperature Senso value
int getTempSensorValue(){
  int temper =(int) TH02.ReadTemperature();
  SensorValue[TEMPER] = temper;
  return temper;
}

//get Humidity Senso value
int getHumiSensorValue(){
  int humidity =(int)TH02.ReadHumidity();
  SensorValue[HUMI] = humidity;
  return humidity;
}

//get Grove-Light Sensor value
int getLightSensorValue(){
  return (SensorValue[LIGHT] = analogRead(pinLight));
}
//get Grove-UV Sensor value
int getUVSensorValue(){
  return (SensorValue[UV] = analogRead(pinUV));
}

//Grove PIR Motion Sensor
int getPIRSensorValue(){
  return (SensorValue[PIR] = digitalRead(pinPIR));
}


  
  
void setup() 
{
  Serial.begin(9600);
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);    
    while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
      
    printSettings();

    


  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

  File logFile = SD.open("LOG.csv", FILE_WRITE);
  if (logFile)
  {
    logFile.println(", , , , ,");
   String header = "ID, Temperature, Humidity, Light, UV, PIR";
   logFile.println(header);
   logFile.close();
   Serial.println(header);
  }
  else
  {
    Serial.println("Couldn't open file");
  }
        
}


void loop() 
{ 
   // make a string for assembling the data to log:
  String dataString = String(ID) + ","String(getTempSensorValue) + "," + String(getHumiSensorValue)+ "," + String(getLightSensorValue)+ "," + String(getUVSensorValue)+ "," +  String(getPIRSensorValue);

  }

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("LOG.csv", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  } 
}

ID++;

Hi SyamsulHasri,
Reread Paul's post, he tells you exactly what you need to do in order to get help.