WI数据小文件分析 LinqPad+C#,任意行打印输出

b
bigCat2012
楼主 (未名空间)

感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载https://gofile.io/d/XwcWGo

第二步下载LinqPad https://www.linqpad.net/Download.aspx
5,6都行,无所谓,我用的是version 5

把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”,press F5或者按Play Button运行就能输出;

注意几点:
1)把程序里面的 “C:\Data\WI\2152_5758.txt”,换成你自己local的文件Path,
2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump(); 里面的100就好,改成500,就会输出前500行数据,但是太多LinqPad会只输出前1000行
3)如果要取中间数据,比如从1500行-2000行,把.Take(100).Dump();换成.Skip(1500).Take(500).Dump(); 就好

剩下的我commont掉的是做更复杂的数据分析用的,比如说找出20个人注册同一地址等
等;这个如果是.net或者SQL熟手可以继续玩

void Main()
{
string file1 = @"C:\Data\WI\2152_5758.txt";
File.ReadLines(file1).Skip(1).Select(s => new VoterInfo(s)).Take(100).
Dump();
//.Where(s=>s.ElectionName.StartsWith("2020 General Election"))
//.Where(s => s.DateBallotReturned != null && s.DateBallotSent != null)
//.Where(s=>s.BallotDeliveryMethod == "Mail") // .Take(10).Dump();
//.GroupBy(s => s.BallotDeliveryMethod, s => s.VoterRegNumber).Select(s => $"{s.Key}, {s.Count()}").Dump();
//.Where(s=>s.VoterRegNumber == "701040741").Dump();
// .GroupBy(s=>s.VoterRegNumber, s=>s.VoterRegNumber).Where(s=>s.Count() > 1).Dump();
}

public class VoterInfo
{
public VoterInfo(string rawstring)
{
string[] items = rawstring.Split('\t');
this.VoterRegNumber = items[0];
this.LastName = items[1];
this.FirstName = items[2];
this.MiddleName = items[3];
this.Suffix = items[4];
this.VoterStatus = items[5];
this.VoterStatusReason = items[6];
this.VoterType = items[7];
this.Address1 = items[8];
this.Address2 = items[9];
this.HouseNumber = items[10];
this.StreetName = items[11];
this.UnitType = items[12];
this.UnitNumber = items[13];
this.ZipCode = items[14];
this.MailingAddress1 = items[15];
this.MailingAddress2 = items[16];
this.MailingCityStateZip = items[17];
this.PhoneNumber = items[18];
this.EmailAddress = items[19];
this.Jurisdiction = items[20];
this.County = items[21];
this.AbsApplicationDate = items[22];
this.ApplicationSource = items[23];
this.ApplicationType = items[24];
this.AbsenteeAddressName = items[25];
this.ElectionName = items[26];
this.BallotReasonType = items[27];
this.BallotType = items[28];
this.BallotStatus = items[29];
this.DistrictCombo = items[30];
this.WARDNAME = items[31];
this.BallotStatusReason = items[32];
this.BallotDeliveryMethod = items[33];
DateTime date;
if(DateTime.TryParse(items[34], out date))
DateBallotSent = date;

if (DateTime.TryParse(items[35], out date))
DateBallotReturned = date;
}

public string VoterRegNumber { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string Suffix { get; set; }
public string VoterStatus { get; set; }
public string VoterStatusReason { get; set; }
public string VoterType { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string HouseNumber { get; set; }
public string StreetName { get; set; }
public string UnitType { get; set; }
public string UnitNumber { get; set; }
public string ZipCode { get; set; }
public string MailingAddress1 { get; set; }
public string MailingAddress2 { get; set; }
public string MailingCityStateZip { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public string Jurisdiction { get; set; }
public string County { get; set; }
public string AbsApplicationDate { get; set; }
public string ApplicationSource { get; set; }
public string ApplicationType { get; set; }
public string AbsenteeAddressName { get; set; }
public string ElectionName { get; set; }
public string BallotReasonType { get; set; }
public string BallotType { get; set; }
public string BallotStatus { get; set; }
public string DistrictCombo { get; set; }
public string WARDNAME { get; set; }
public string BallotStatusReason { get; set; }
public string BallotDeliveryMethod { get; set; }
public DateTime? DateBallotSent { get; set; }
public DateTime? DateBallotReturned { get; set; }
}

F
FA8

👍,需要更多信息才能挖到舞弊证据。

【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................

w
wang9

这只是第一步,要找律师,才能把证据递上去。

要知道自己的目标,不能玩物丧志。

【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................

d
daemonself

为什么不召唤蟒蛇, 我今晚来写个parser
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................

b
bigCat2012

这破网站,把\t给吃掉了

string[] items = rawstring.Split('t'); 里面的't'应该是'\t'
string[] items = rawstring.Split('\t');
d
daemonself

我联系呢,莫着急,你要不要把我举报给aoc?
【 在 wang9 (老王) 的大作中提到: 】
: 这只是第一步,要找律师,才能把证据递上去。
: 要知道自己的目标,不能玩物丧志。
: );

p
peacemind2

这王八就是一个说风凉话的,不用睬他。
【 在 daemonself (新晋川粉,前mit行为艺术专业博士后导师) 的大作中提到: 】
: 我联系呢,莫着急,你要不要把我举报给aoc?

l
lczlcz

很好, 支持一下楼主.
w
wocow

看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。

b
bigCat2012


【 在 wocow (wocow) 的大作中提到: 】
: 看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
: 做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。

折腾啥,这玩意又不费时间,你以为我花了多长时间写着程序?最多10分钟多一点,
G
Gerdo


你们这是要干嘛?要分析什么?为什么要用这么原始的办法?

【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................

b
bigCat2012


【 在 Gerdo (Test) 的大作中提到: 】
: 你们这是要干嘛?要分析什么?为什么要用这么原始的办法?
: );

这不是原始,这是方便让普通人,甚至不懂电脑的人也能轻松看到数据;任何人如果按照我的方法+步骤,下载linqpad,10分钟就能看到数据,做他自己判断;

用你的“非原始”导入数据库的方法,那得计算机科班的人才能明白,ok?
b
bigCat2012

这个论坛有什么方法可以贴图吗?还是只能发文字信息?
g
gaodi

为什么有两个文件?分别是什么?