有這個查詢::C# - SQL - LINQ查詢
var q2 =
from sd in db.ServerDrives
where sd.DriveLetter == driveList[i].Name
select sd;
ServerDrive existingServerDrives = q.First();
existingServerDrives.FreeSpace = driveList[i].FreeSpace;
//..
db.SubmitChanges();
我的問題是,我不知道放在哪裏參考[i]於
參考了一些問題。爲[I] ::
for (int i = 0; i < driveList.Count; i++)
我可以把它上面的,
existingServerDrives.FreeSpace = driveList[i].FreeSpace;
並且該行可以識別它,但由於。(代碼如下),我需要整個查詢來識別它。 line
where sd.DriveLetter == driveList[i].Name;
有誰知道我怎麼可能做到這一點?
編輯: 完整的代碼::
class Program
{
List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x => x.IsReady).ToList<DriveInfo>(); //Get all the drive info
Server server = new Server(); //Create the server object
ServerDrive serverDrives = new ServerDrive();
public static void Main()
{
Program c = new Program();
c.RealDriveInfo();
c.WriteInToDB();
}
public void RealDriveInfo()
{
//Insert information of one server - You will need get information of all servers
server.ServerID = 0; //Here is necessery put PK key. I recommend doing the SQL server will automatically generate the PK.
server.ServerName = string.Concat(System.Environment.MachineName);
//Inserts information in the newServers object
for (int i = 0; i < driveList.Count; i++)
{
//Put here all the information to object Server
serverDrives.DriveLetter = driveList[i].Name;
serverDrives.TotalSpace = driveList[i].TotalSize;
serverDrives.DriveLabel = driveList[i].VolumeLabel;
serverDrives.FreeSpace = driveList[i].TotalFreeSpace;
serverDrives.DriveType = driveList[i].DriveFormat;
server.ServerDrives.Add(serverDrives);
}
}
public void WriteInToDB()
{
//Add the information to an SQL Database using Linq.
DataClasses1DataContext db = new DataClasses1DataContext(@"sqlserver");
db.Servers.InsertOnSubmit(server);
var q2 =
from s in db.Servers
where s.ServerName == "LAPTOP-043"
select s;
Server existingServers = q2.First();
for (int i = 0; i < driveList.Count; i++)
existingServers.ServerName = string.Concat(System.Environment.MachineName);
//..
for (int i = 0; i < driveList.Count; i++)
{
var q =
from sd in db.ServerDrives
where sd.DriveLetter == driveList[i].Name
select sd;
ServerDrive existingServerDrives = q.First();
existingServerDrives.FreeSpace = driveList[i].FreeSpace;
//..
db.SubmitChanges();
我所要做的是讓查詢找到「驅動器號」是一樣的驅動器C的一行:\此計算機上。然後,第二部分應該更改FreeSpace值並將其替換爲從控制檯應用程序檢索到的新FreeSpace值。
任何反饋,將不勝感激,在此先感謝:)
你想達到什麼目的?請向我們介紹您的問題和整個代碼,而不僅僅是記錄。 – 2012-08-10 09:37:31
你有什麼「幾個問題」? – 2012-08-10 09:38:04
你的查詢想要做什麼?看起來好像Linq可能不是您的最佳解決方案,但您不清楚代碼的用途。 – 2012-08-10 09:40:07